交叉类型

交叉类型是将多个类型合并为一个类型,合并后类型的对象 要同时 拥有其他类型的成员,例如

  1. Person & Serializable & Loggable同时是 Person Serializable Loggable 就是说这个类型的对象同时拥有了这三种类型的成员。

使用场景:混入(mixins)

  1. function extends<T, U>(first: T, second: U): T & U {
  2. let result = <T & U>{}
  3. for (let p in first) {
  4. result[p] = first[p]
  5. }
  6. for (let p in first) {
  7. if (!result.hasOwnProperty(p)) {
  8. result[p] = second[p]
  9. }
  10. }
  11. }