一.any
any表示的是任意类型,一个变量设置类型为any后,相当于该变量管理了TS的类型检测,尽量不要用any
let d: any
声明变量如果不指定类型,则TS解析器会自动判断变量的类型为any(隐式的any)
let d;
d = 10;
d = 'hello'
d = true
二.unknown
unknown表示未知的类型
let e: unknown;
e = 10;
e = 'hello'
两者的区别在于:
d的类型为any,它可以赋值为任意变量。
而e的类型为unknown,但是不能直接赋值给其他变量
let s: string;
s = d; 不报错
s = e; 报错
那么unknown类型变量如何给其他变量赋值呢?
类型断言,可以告诉解析器变量的实际类型
s = e as string
变量 as 类型s = <string>e
<类型>变量
三.object
- {}用来指定对象中可以包含哪些属性
- 语法:
{属性名:属性值类型,属性名:属性值类型}
- 在属性名后面加?,表示属性是可选的
let b: {name: string, age?: number}
b = {name: '小四',age: 18}
-如果给每个可选属性后面都加?,会比较麻烦, [propName:string]: any
表示属性名为string,属性值为任意类型。此属性是可选的
let c: {name: string,[propName:string]:any}
c = {name:'小四',a:1,b:2}
四.function
- 设置函数结构的类型声明
- 语法:
(形参:类型,形参:类型 ...)=> 返回值类型
, 使用箭头函数
let d: (a:number,b:number) => number
d = function(n1,n2){
return n1+n2
}
五.array
- 两种类型声明方式
类型[]
let e: string[]
e = ['a','b','c']
let f: number[]
f = [1,2,3]
Array<类型>
let g: Array<number>
g = [1,2,3]
六.tuple
- 元组,元组就是固定长度的数组
- 语法:
[类型,类型,类型]
let h: [string,number]
h = ['hello',123]
七.enum
- 枚举:把所有可能的值列出来
- 语法:
enum 名字
enum Gender{
Male = 0,
Female = 1
}
let i: {name:string, gender:Gender}
i = {
name:'小四',
gender: Gender.Male
}
八.类型的别名
- 通过
type
关键字,起到简化的作用
type myType = 1|2|3|4|5
let k: myType
k = 1