类型声明:
布尔值:let isDone: boolean = false;
数字:let num: number = 1;(0x十六进制、0b二进制、0o八进制)
字符串:let name: string = "nick";
数组:let list: number[] = [1, 2, 3];
let list: Array<number> = [1, 2, 3];
元组(Tuple):元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。
let a: [string, number];
a = ['hello world', 10]; // ok
a = [10, 'hello world']; //error
枚举:enum类型是对JavaScript标准数据类型的一个补充。
enum Color {Red, Green, Blue}
let c: Color = Color.Green;
Any: let notSure = 4;
notSure = "nick"; //ok
notSure = false; //ok
let list: any[] = [1, 'nick', false];
list[1] = 100; //ok
Void: 一般用在没有返回值的函数中。
function warnUser(): Void{
console.log("hello world");
}
Null 和 Undefined:Null和Undefined是所有类型的子类。
Never:表示永远不存在值的类型。一般用于报错。never是任何类型的子类。never类型可以赋值给其他任何类型,但其他类型不可以赋值给never。
Object:object表示非原始类型,也就是畜类number, string,boolean,symbol, null或undefined之外的类型。
类型断言:有两种形式
1.<>语法
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;
2. as语法
let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;
两种写法是等价的,但如果是在jsx语法里,只有as语法生效。