布尔值
1 | let isDone: boolen = false; |
数字
1 | // 除了支持十进制和十六进制字面量,TypeScript还支持ECMAScript 2015中引入的二进制和八进制字面量。 |
字符串
1 | let name1: string = 'hello'; |
数组
1 | // 方法一、 |
元组(Tuple)
1 | // 元组Tuple:元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。 比如,你可以定义一对值分别为 string和number类型的元组 |
枚举
1 | enum Color { Red, Green, Blue }; |
Any
有时候,我们会想要为那些在编程阶段还不清楚类型的变量指定一个类型。这些值可能来自于动态的内容,比如来自用户输入或第三方代码库。这种情况下,我们不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查。那么我们可以使用 any类型来标记这些变量.
1 | let notSure: any = 4; |
在对现有代码进行改写的时候,any
类型是十分有用的,它允许你在编译时可选择地包含或移除类型检查。
你可能认为 Object
有相似的作用,就像它在其它语言中那样。 但是 Object
类型的变量只是允许你给它赋任意值 - 但是却不能够在它上面调用任意的方法,即便它真的有这些方法:
1 | let prettySure: Object = 4; |
当你只知道一部分数据的类型时,any类型也是有用的。 比如,你有一个数组,它包含了不同的类型的数据
1 | let list3: any[] = [1, 'str', false]; |
void
某种程度上来说,
void
类型像是与any
类型相反,它表示没有任何类型。 当一个函数没有返回值时,你通常会见到其返回值类型是void
1 | function sayHello(name: string): void { |
声明一个void类型的变量没有什么大用,因为你只能为它赋予undefined和null
1 | let unusable: void = undefined || null; |
Null和Undefined
TypeScript里,undefined和null两者各自有自己的类型分别叫做undefined和null。 和 void相似,它们的本身的类型用处不是很大
1 | let u: undefined = undefined; |
never:never类型表示的是那些永不存在的值的类型
1 | // 例如, never类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型; 变量也可能是 never类型,当它们被永不为真的类型保护所约束时。 |
Object
Object: object表示非原始类型,也就是除number,string,boolean,symbol,null或undefined之外的类型
1 | //?使用object类型,就可以更好的表示像Object.create这样的API。 |
类型断言
有时候你会遇到这样的情况,你会比TypeScript更了解某个值的详细信息。 通常这会发生在你清楚地知道一个实体具有比它现有类型更确切的类型。
通过类型断言这种方式可以告诉编译器,“相信我,我知道自己在干什么”。类型断言好比其它语言里的类型转换,但是不进行特殊的数据检查和解构。它没有运行时的影响,只是在编译阶段起作用。TypeScript会假设你,程序员,已经进行了必须的检查
类型断言有两种形式
其一是“尖括号”语法
1 | let someValue: any = 'hello world'; |
as语法
1 | let someValue2: any = 'hello world2'; |
两种形式是等价的。 至于使用哪个大多数情况下是凭个人喜好;然而,当你在TypeScript里使用JSX时,只有 as语法断言是被允许的。