1、数据类型 DataType
2、描述对象(使用类型签名和Record)
Object表示的范围太大了(一般不用),可以使用type/interface描述或者class/constructor
type A1 = {
[k: string]: number
}
// 等价于上面的类型声明
type A2 = Record<string, number>
3、描述数组(使用[]和Array泛型)
由于Array太不精确,所以一般用Array<T>
或string[]
或[string, number]
来描述数组
type A1 = string[]
// 等价于
type A2 = Array<string>
// 三元组
type B1 = [string, number, string]
4、描述函数对象
由于Function太不精确了,一般使用 () => ?
来描述函数
type Fn1 = (a: number, b: number) => number
// 函数没有return返回值的情况
type FnReturnVoid = () => void
type Person = {name: string, sayHi: FnWithThis}
type FnWithThis = (this: Person, name: string) => void
const sayHi: FnWithThis = function() {
console.log('hi ' + this.name)
}
const x: Person = {name: 'frank', sayHi: sayHi}
x.sayHi('wu')
sayHi.call(x, 'wu')
5、描述其他对象
const d: Date = new Date()
const r: RegExp = /ab+c/
const r1: RegExp = new RegExp('ab+c')
const m: Map<string, number> = new Map()