交叉类型
交叉类型是将多个类型合并为一个类型,合并后类型的对象 要同时 拥有其他类型的成员,例如
Person & Serializable & Loggable同时是 Person 和 Serializable 和 Loggable。 就是说这个类型的对象同时拥有了这三种类型的成员。
使用场景:混入(mixins)
function extends<T, U>(first: T, second: U): T & U {let result = <T & U>{}for (let p in first) {result[p] = first[p]}for (let p in first) {if (!result.hasOwnProperty(p)) {result[p] = second[p]}}}
