首页 > 其他分享 >TypeScript常用类型(基本类型,数组类型,类型别名type ,函数类型,对象类型,接口interface,元组,类型推论,类型断言,字面量类型,枚举类型 enum,any类型,typeof新用

TypeScript常用类型(基本类型,数组类型,类型别名type ,函数类型,对象类型,接口interface,元组,类型推论,类型断言,字面量类型,枚举类型 enum,any类型,typeof新用

时间:2022-11-04 14:35:48浏览次数:61  
标签:TypeScript console log number let typeof 类型 string

原始基本类型

let age: number = 18;

let myname: string = "tom";

let flag: boolean = true;

let a: null = null;

let b: undefined = undefined;

let c: symbol = Symbol();

console.log(age);
console.log(myname);
console.log(flag);
console.log(a);
console.log(b);
console.log(c);

  

数组类型
let numbers: number[] = [1, 2, 3]; //数字数组类型

let strings: string[] = ["1", "2", "3"]; //字符串数组类型

let arr: Array<string> = ["1", "2", "3"]; //数组第二种写法

let arr2: (string | number)[] = [1, "2", 3]; //联合类型(添加小括号,数组中既有数字也有字符串)

let arr3: string | number[] = [1, 2, 3]; //联合类型(去掉小括号,数组中要么是数字要么是字符串,只能有一种)

let arr4: Array<string | number> = [1, "2", "3"]; //联合类型(数组中既有数字也有字符串)

console.log(numbers);
console.log(strings);
console.log(arr);
console.log(arr2);
console.log(arr3);
console.log(arr4);

  

  类型别名(自定义类型)
type ComObj = {
  count: number;
  name: string;
};

let obj: ComObj = {
  count: 1,
  name: "tom",
};

type ComArr = (number | string)[];

let arrs: ComArr = [1, 2, "3"];

console.log(obj);
console.log(arrs);

  

  函数类型(函数参数类型和返回值类型)
//函数声明式
//没有返回值的函数
function add(num1: number, num2: number) {
  console.log(num1 + num2);
}

//有返回值的函数
function add2(num1: number, num2: number): number {
  return num1 + num2;
}

//有返回值的函数
function add3(num1: number, num2: number): number {
  return num1 + num2;
}

//函数表达式
const add4 = (num1: number, num2: number): number => {
  return num1 + num2;
};

//函数表达式第二种写法
const add5: (num1: number, num2: number) => number = (num1, num2) => {
  return num1 + num2;
};

//函数void类型(函数没有返回值可以定义为void类型
function add6(name: string): void {
  console.log(name);
}

//函数可选参数类型
function mySlice(start?: number, end?: number): void {
  console.log(start, end);
}

add(1, 2);
console.log(add2(1, 2));
console.log(add3(1, 2));
console.log(add4(1, 2));
console.log(add5(1, 2));
add6("tom");
mySlice(1, 2);
mySlice(1);

  

对象类型
let person: { name: string; age: number; sayHi(): void } = {
  name: "tom",
  age: 18,
  sayHi() {
    console.log(1);
  },
};
console.log(person);

//对象可选属性
function myAxios(config: { url: string; method?: string }): void {
  console.log(config);
}
myAxios({ url: "www.baidu.com" });
myAxios({ url: "www.baidu.com", method: "get" });

  

接口( interface类似type但是没有等号 interface只可以为对象注明类型,type可以为任何类型注明)
interface TypePerson {
  name: string;
  age: number;
}
// type TypePerson={
//     name:string,
//     age:number
// }
let myPerson: TypePerson = {
  name: "tom",
  age: 18,
};
console.log(myPerson);

//接口继承
interface Person1 {
  x: number;
  y: number;
}

//Person2继承了Person1中的 x,y,有添加了z
interface Person2 extends Person1 {
  z: number;
}

let personAll: Person2 = {
  x: 1,
  y: 2,
  z: 3,
};

console.log(personAll);

  

元组
let position: number[] = [12, 23, 44]; //数组类型可添加任意多个值

let position2: [number, number] = [33, 44]; //限定值的个数

  

类型推论
let myAge = 18; //省略注明类型,但是ts会自动推论类型

  

类型断言
let htmlType = document.getElementById("aLink") as HTMLAnchorElement;

  

字面量类型(let声明的变量可以改变,const声明的为常量不能改变,所以const声明的就是字面量类型)
let str1 = "hello"; //str1类型为string
const str2 = "hello"; //str2类型为hello

  

枚举类型 (enum)
enum ArrEnum {
  UP,
  Down,
  Left,
  Right,
} //不设置默认0,1,2,3递增
// enum ArrEnum{UP=2,Down=4,Left=6,Right=8} //可以设置数字枚举
// enum ArrEnum{UP='Up',Down='Down',Left='Left',Right='Right'} //可以设置字符串枚举
function changeArrEnum(position: ArrEnum) {
  console.log(position);
}
changeArrEnum(ArrEnum.UP);

  

any类型(任何类型,不检查类型,不推荐使用)
let anyObj: any = {
  name: 11,
  age: "tom",
};

  

ts中typeof新用法(可以在类型上下文中引用变量或属性的类型)
let p = { x: 1, y: 1 };
// function typeofP(point:{x:number,y:number}){
//     console.log(point)
// }
//可以代替上面的写法
function typeofP(point: typeof p) {
  console.log(point);
}
typeofP(p);

  

 

 

 

 

标签:TypeScript,console,log,number,let,typeof,类型,string
From: https://www.cnblogs.com/xiaobaibubai/p/16857661.html

相关文章

  • postgresql数据库数组(Integer)类型避坑
     前提:业务需要把时间戳(秒)数组,存到一个字段,存入后的数据结构:{1659283200,1661961600}entity类配置 @Data@TableName("a")publicclassDispSocBillextendsBaseEnti......
  • (笔记)ROS2:ament_cmake类型功能包导入消息接口三步骤
     一、三个步骤1.在CMakeLists.txt中导入,具体是先find_packages再ament_target_dependencies。2.在packages.xml中导入,具体是添加depend标签并将消息接口写入。3.......
  • undefined与null的区别,以及数据类型检测
    title:undefined与null的区别,以及数据类型检测的方法1.undefined与null的区别由来,为什么只有JS才有undefined这种数据类型呢JS作者在设计时也是先设计了null,用来表示......
  • 数据类型拓展
    publicclassDemo03{publicstaticvoidmain(String[]args){//整数拓展:进制二进制开头0b十进制八进制0十六进制0xinti=10......
  • 使用非类型的模板参数和传普通参数的区别?
     如上所示、想完成加法操作有两种写法一种是用一个模板、一种是用两个参数虽然功能上差不多、但其中的区别还是有的:函数调用时要把压栈而模板里的东西只会......
  • java时间类型转换方法
    java时间类型转换方法1.Calendar转LocalDateTime/***Calendar转LocalDateTime*@paramcalendar*@return*/publicstaticLoca......
  • 企业项目类型以及开发流程
    1.企业项目类型#1面向互联网用户:商城类项目-微信小程序商城#2面向互联网用户:二手交易类的-咸鱼-转转#3公司内部项目:python写的重......
  • django model字段类型
    1、models.AutoField自增列=int(11)如果没有的话,默认会生成一个名称为id的列,如果要显示的定义一个自增列,必须把该列设置为主键(primary_key=True)2、models.CharFie......
  • 类型转换
    类型转换类型容量从低到高:byte,short,char-->int-->long-->float-->double强制类型转换:(类型)变量名inti=128;byteb=(byte)i;//-128内存溢出自动类型转换:低-......
  • 关于看类型不爽我想改它怎么办
    前言:我们(程序书)在编码中,会遇到很多让我们(程序书)用起来很不爽的类型名,它会修改成一些很好(乱七八糟)的名词来辅助记忆(装逼)。因此我需要记下来一些重定义类型名的方法。1.de......