1、数据类型 DataType

画板

2、描述对象(使用类型签名和Record)

Object表示的范围太大了(一般不用),可以使用type/interface描述或者class/constructor

画板

  1. type A1 = {
  2. [k: string]: number
  3. }
  4. // 等价于上面的类型声明
  5. type A2 = Record<string, number>

3、描述数组(使用[]和Array泛型)

由于Array太不精确,所以一般用Array<T>string[][string, number]来描述数组

  1. type A1 = string[]
  2. // 等价于
  3. type A2 = Array<string>
  4. // 三元组
  5. type B1 = [string, number, string]

4、描述函数对象

由于Function太不精确了,一般使用 () => ?来描述函数

  1. type Fn1 = (a: number, b: number) => number
  2. // 函数没有return返回值的情况
  3. type FnReturnVoid = () => void
  1. type Person = {name: string, sayHi: FnWithThis}
  2. type FnWithThis = (this: Person, name: string) => void
  3. const sayHi: FnWithThis = function() {
  4. console.log('hi ' + this.name)
  5. }
  6. const x: Person = {name: 'frank', sayHi: sayHi}
  7. x.sayHi('wu')
  8. sayHi.call(x, 'wu')

5、描述其他对象

  1. const d: Date = new Date()
  2. const r: RegExp = /ab+c/
  3. const r1: RegExp = new RegExp('ab+c')
  4. const m: Map<string, number> = new Map()