联合类型示例中的泛型 T 和 U 默认类型是 unknown,他们的结果 result 类型时 T & U 也是 unknown 类型,调用 result.hasOwnProperty() 方法是非法的。
function extend<T, U>(first: T, second: U): T & U {
const result = <T & U>{};
for (let id in first) {
(<T>result)[id] = first[id];
}
for (let id in second) {
if (!result.hasOwnProperty(id)) {
(<U>result)[id] = second[id];
}
}
return result;
}
译文地址:https://jkchao.github.io/typescript-book-chinese/typings/overview.html#%E7%B1%BB%E5%9E%8B%E5%88%AB%E5%90%8D
联合类型示例中的泛型 T 和 U 默认类型是 unknown,他们的结果 result 类型时 T & U 也是 unknown 类型,调用 result.hasOwnProperty() 方法是非法的。
正确示例应当使 T 和 U 均继承自 object 类型