原始类型
布尔值
boolean 包含 true/false
const isDone: boolean = false
数字
number 浮点数,并且支持 二进制、八进制、十进制、十六进制字面量
const decLiteral: number = 6const hexLiteral: number = 0xf00d // 十六进制const binaryLiteral: number = 0b1010 // 二进制const octalLiteral: number = 0o744 // 八进制
字符串
string
const name: string = 'bob'
null 和 undefined
const u: undefined = undefinedconst n: null = null
any
any 任意类型
let notSure: any = 4notSure = 'maybe a string instead'notSure = false // okay, definitely a boolean
void
某种程度上来说,void 类型像是与 any 类型相反,它表示没有任何类型。 当一个函数没有返回值时,你通常会见到其返回值类型是 void
function warnUser(): void {console.log('This is my warning message');}// 声明一个void类型的变量没有什么大用,因为你只能为它赋予 undefined 和 nulllet unusable: void = undefined
Object 类型
object 表表示非原始类型,也就是除 number,string,boolean,symbol,null 或 undefined 之外的类型。
const foo: object = function () {} // [], {}const obj: { foo: number, bar: string } = { foo: 123, bar: 'string' }
数组类型
元素后跟 []
const list: number[] = [1, 2, 3]
数组泛型
const list: Array<number> = [1, 2, 3]
元祖 Tuple
元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。 比如,你可以定义一对值分别为 string 和 number 类型的元组
let tuple: [string, number] = ['foo', 1]
枚举
enum 类型是对JavaScript标准数据类型的一个补充
// 默认从 0 开始,依次递增enum Color {Red,Green,Blue} // 0, 1, 2let c: Color = Color.Green; // 1// 或者,全部都采用手动赋值enum Color {Red = 1,Green = 2,Blue = 4}let c: Color = Color.Green; // 2// 枚举类型提供的一个便利是你可以由枚举的值得到它的名字enum Color {Red = 1,Green,Blue} // 1, 2, 3let colorName: string = Color[2]; // Green
函数类型
function add(x: number, y: number): number {return x + y}let myAdd = function(x: number, y: number): number { return x + y }
