typescript的数据类型
基本数据类型
布尔值
布尔值是最基础的数据类型,在 typescript 中,使用 boolean 定义布尔值类型:let isDone: boolean = false;
数值
使用 number 定义数值类型:
1 | let decLiteral: number = 6; |
编译结果:
1 | var decLiteral = 6; |
其中 0b1010 和 0o744 是 ES6 中的二进制和八进制表示法,它们会被编译为十进制数字。
字符串
使用 string 定义字符串类型:
1 | let myName: string = 'dingcang'; |
编译结果:
1 | var myName = 'Xcat Liu'; |
其中 ` 用来定义 ES6 中的模板字符串,${expr} 用来在模板字符串中嵌入表达式。
数组类型
数组类型有多种定义方式,比较灵活。
「类型 + 方括号」表示法
1 | let fibonacci: number[] = [1, 1, 2, 3, 5]; |
数组泛型
1 | let arr: Array<number> = [1, 1, 2, 3, 5]; |
用接口表示数组
1 | interface NumberArray { |
any 在数组中的应用
let list: any[] = ['Xcat Liu', 25, { website: 'http://xcatliu.com' }];
类数组
元组 Tuple
元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。
1 | let a: [number, string]; |
空值
用 void 表示没有任何返回值的函数:
1 | function alertName(): void { |
声明的 void 类型的变量只能赋值为 undefined 和 null:
1 | let unusable: void = undefined; |
null 和 undefined
使用 null 和 undefined 来定义这两个原始数据类型:
1 | let u: undefined = undefined; |
请注意:
- undefined 类型的变量只能被赋值为 undefined,null 类型的变量只能被赋值为 null。
- 与 void 的区别是,undefined 和 null 是所有类型的子类型。也就是说 undefined 类型的变量,可以赋值给 number 类型的变量。
任意值
任意值(Any)用来表示允许赋值为任意类型。
1 | let myFavoriteNumber: any = 'seven'; |
any 类型允许被赋值为任意类型
变量如果在声明的时候,未指定其类型,那么它会被识别为任意值类型。
类型推论
typeScript 会在没有明确的指定类型的时候推测出一个类型,这就是类型推论。
1 | let myFavoriteNumber = 'seven'; |
联合类型
联合类型使用 | 分隔每个类型。
1 | let myFavoriteNumber: string | number; |
- 这里的 string | number 的含义是,允许 myFavoriteNumber 的类型是 string 或者 number,但是不能是其他类型。
- 当 TypeScript 不确定一个联合类型的变量到底是哪个类型的时候,我们只能访问此联合类型的所有类型里共有的属性或方法。
接口
使用接口(Interfaces)来定义对象的类型。
1 | interface Person { |
- 接口一般首字母大写。
- readonly 为只读属性
- name 为确定属性
- age 为可选属性
- [propName: string]为任意属性
需要注意的是,一旦定义了任意属性,那么确定属性和可选属性都必须是它的子属性