// TS的变量类型
// 1.数字类型
let a: number = 1;
// 2.字符串类型
let b: string = "hello";
// 3.布尔类型
let c: boolean = true;
// 4.any类型(赋值给其他类型的时候会改变原类型,所以不常用)
let d: any = "jjjj";
d = 2;
d = false;
// 5.unKnown类型(类型安全的any)
let e: unknown = 3;
// 类型断言可以用来告诉解析器变量的实际类型,两种写法
a = e as number
a = <number>e
// 类型设置可以用"|"来设置变量的多种类型
let f: number | string;
f = 3;
f = "hello";
// 6.void类型(没有值,一般用于函数不会返回值时)
function fn(): void {
}
// 7.never类型(用于表示永远不会返回结果)
function fn2(message: string): never {
throw new Error(message);
}
// 8.object类型(不实用,js中的object类型太多了,一般可以用{}来代替对象类型)
let g: object;
g = {};
g = () => { };
let h: {}; //表示空对象
let h2: { name: string, age: number }; //表示h2为一个对象,属性有name和age,不能多也不能少
h2 = { name: "xiaojie", age: 18 };
let h3: { name: string, age?: number }; //表示h3为一个对象,属性有name和age,age可有可无
h3 = { name: "xiaojie", age: 18 };
h3 = { name: "xiaojie" };
let h4: { name: string, [propName: string]: any }; //表示h4为一个对象,属性中必须要有name,其他属性不做要求
h4 = { name: "xiaojie", a: 1, b: "hello", c: false }
// 9.函数类型声明
let i: (a: number, b: number) => number; //表示i为一个函数类型,参数为number类型的a和b,返回值类型也是number
i = function (n1: number, n2: number): number {
return n1 + n2
}
// 10.数组类型,有两种表示方法
let arr: string[]; //表示字符串类型的数组
arr: Array<string>;
arr = ["hello", "world"];
let arr2: number[]; //表示number类型的数组
arr2: Array<number>;
arr2 = [1, 2, 3, 4, 5, 6];
// 11.元组类型
let yz: [string, string, number];
yz = ["hello", "world", 1];
// 12.枚举类型,常用于枚举类
enum Gender {
Male = 1,
Female = 0
};
let j: { name: string, gender: Gender };
j = { name: "xiaomin", gender: Gender.Male };
j = { name: "xiaohua", gender: Gender.Female };
// &表示同时
let k: { name: string } & { age: number } //表示k对象必须满足name为string,age为number类型
k = { name: "xiaohong", age: 2 }
// 类型别名
type myType = 1 | 2 | 3 | 4 | 5;
let l: myType;
l = 2;