Typescript基础之基本类型
类型声明
类型声明是
TS
非常重要的一个特点。通过类型声明可以指定
TS
中变量(参数、形参)的类型。指定类型后,当为变量赋值时,
TS
编译器会自动检查是否复核类型声明,复核则赋值,否则报错。简而言之,类型声明给变量设置了类型,使得变量只能存储某种类型的值。
语法:
1
2
3
4
5
6
7let 变量: 类型;
let 变量: 类型 = 值;
function fn(参数: 类型, 参数: 类型): 类型{
...
}
基本类型
1、字符串: string
1 | let str:string = 'hello word' |
2、布尔值: boolean
1 | let isShow:boolean = true |
3、数字: number
1 | let age: number = 23; |
4、数组: array
1 | let list: number[] = [1, 2, 3]; |
5、元组: tuple
元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同, 对应位置的类型需要相同。
1 | let arr: [string, number]; |
6、枚举: enum
对JavaScript
标准数据类型的一个补充,使用枚举类型可以为一组数值赋予友好的名字。
1 | enum weeks { |
7、any
unknown
any
, 为不清楚类型的变量指定一个类型, 不通过类型检查器检测。
1 | let x: any = "aaa"; |
unknown
与any
不同的地方在于:①
unknown
只能赋值给自身或者any
②
unknown
没有办法读任何属性,方法也不可以调用所以
unknown
比any
更加安全,当不知道类型的时候更推荐定义为unknown
8、void
void
类型像是与any
类型相反,表示没有任何类型。当一个函数没有返回值时,其返回值类型通常是 void
。
1 | function hello(): void { |
xxxxxxxxxx function createArray
1 | let unusable: void = undefined; |
9、undefined
null
1 | let x1: undefined; |
10、object
1 | let obj: object = { a: "1" }; |
object
、Object
以及{}
这三个类型的区别:①
object
类型可以用来声明引用数据类型,例如数组([]
)、对象({}
)、函数(function
),不能用来声明基础数据类型,如string
、number
等。②
Object
和{}
可以用来声明任意数据类型,包括基础数据类型和引用数据类型,但赋值后的数据不能进行修改。
联合类型
1 | let x2: number | string | boolean; |
类型推论
1 | let x3 = 3; // 推论x3为number类型 |
类型断言
语法:值 as 类型(value as string) 或 <类型>值(
value)。 需要注意的是,类型断言只能够「欺骗」TypeScript 编译器,无法避免运行时的错误,反而滥用类型断言可能会导致运行时错误。
类型断言虽然可以通过编译,但是并没有什么用 并不会影响结果, 因为编译过程中会删除类型。
1 | let x5: number | string | boolean = "this is a string"; |
*注:可凭个人喜好用以上方法,但当你在
TypeScript
里使用JSX
时,只有as
语法断言是被允许的。