基础类型
布尔
let isDone: boolean = false;
数字
let decLiteral: number = 6;
字符串
let name: string = "bob";
数组
let list: number[] = [1, 2, 3];
let list: Array<number> = [1, 2, 3];
let ro: ReadonlyArray<number> = [1, 2, 3];
元组
let x: [string, number];
x = ['hello', 10];
x[3] = 'world'; // string | number
枚举
enum Color {Red, Green, Blue} // 默认0开始
let c: Color = Color.Green;
Any
let notSure: any = 4;
Void
function warnUser(): void {}
Null和Undefined
非--strictNullChecks模式下是任何类型的子类型
Never
永不为真,存在无法到达的终点
Object
类型断言
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length
let strLength: number = (someValue as string).length; // jsx中必须
变量声明 var 函数作用域 变量提升 let const 块级作用域 解构 function f([first, second]: [number, number]) {} let {a, b}: {a: string, b: number} = o; 默认值 function f(object: { a: string, b?: number }) {} // ?可选 ...c自身的可枚举属性
接口 interface LabelledValue { label: string; name?: string; readonly x: number; } 额外检查 不允许出现interface未出现的属性 用as重新转换解决 索引签名 interface SquareConfig { color?: string; width?: number; [propName: string]: any; } 赋值变量 let squareOptions = { colour: "red", width: 100 }; let mySquare = createSquare(squareOptions); 函数类型接口 interface SearchFunc { (source: string, subString: string): boolean; } let mySearch: SearchFunc; mySearch = function(src: string, sub: string): boolean {}