1. extends
  2. keyof 操作符可以获取某种类型的所有键,其返回类型是联合类型
  3. 泛型约束,在编译阶段就可以提前发现错误,提高了程序的健壮性和稳定性
  1. interface IWithLength {
  2. length: number // 只要传入的值,有 length属性,就符合这个约束
  3. }
  4. function echoLength<T extends IWithLength>(arg: T): T {
  5. console.log(arg.length)
  6. return arg
  7. }
  8. echoLength('str')
  9. echoLength({length: 10})
  10. echoLength([10, 20])
  11. echoLength(300) // 报错
  12. type K1 = keyof WithLength; // 'length'

给类型贴标签

  1. class Queue {
  2. private data = []
  3. push (item: T) {
  4. return this.data.push(item)
  5. }
  6. pop (): T {
  7. return this.data.shift()
  8. }
  9. }
  10. const queue = new Queue<number>()
  11. queue.push(100)
  12. queue.push('str') // 报错,字符串没有 toFixed方法
  13. queue.pop().toFixed()