布尔值 boolean
1 | let handle: boolean = false; |
数值 number
二进制/八进制/十六进制/十进制1
let count: number = 10;
字符串 string
可使用’/“/`1
2let name: string = 'laoWang';
let contact: string = `hi, my name is ${ name }`
数组 array
- 元素类型后接 []
1 | let list: number[] = [1, 2, 3]; |
- 数组泛型, Array<number|string|boolean>
1 | let list: Array<boolean> = [false, true, false]; |
元组 tuple
简洁的说他就是能够存储多类型的数组但是得按照类型申明时后的给出
1 | let arr: [string, number] = ['love', 70]; |
当访问越界元素,会使用联合类型代替。
枚举 enum
为一组数值赋予美好的名字
1 | enum Animal {Cat, Dog, Fox} |
任意值 any
对于第三方库,及不想被检查的时候使用
1 | let num: any = '222'; |
空值 void
1 | function justlog(): void{ |
null, undefined
默认情况下 null 和 undefined 是所有类型的子类型。 就是说你可以把 null 和 undefined 赋值给 number 类型的变量。
然而,当你指定了 –strictNullChecks 标记,null 和 undefined 只能赋值给 void 和它们各自。 这能避免很多常见的问题。 也许在某处你想传入一个 string 或 null 或 undefined,你可以使用联合类型 string | null | undefined
never
never 表示那些永不存在的类型
是任何类型的子类
nerver 可以赋值给任何类型
任何类型包括 any 都不能赋值给 never
看例子大多用在 error1
2
3
4
5
6
7
8
9
10
11
12
13
14function error(message: string): never {
throw new Error(message);
}
// 推断的返回值类型为never
function fail() {
return error("Something failed");
}
// 返回never的函数必须存在无法达到的终点
function infiniteLoop(): never {
while (true) {
}
}
对象Object
1 | declare function create(o: object | null): void; |
类型断言
- <>(jsx 不可使用)
- as
1 | let someValue: any = "this is a string"; |