Closed leslylulu closed 4 years ago
为了强制要求 copyFields
的第二个参数中不能出现一个其他的第一个参数中不存在的字段:
function copyFields<T extends U, U>(target: T, source: U): T {
for (let id in source) {
target[id] = (<T>source)[id];
}
return target;
}
let x = { a: 1, b: 2, c: 3, d: 4 };
copyFields(x, { b: 10, e: 20 });
// Property 'e' is missing in type '{ a: number; b: number; c: number; d: number; }' but required in type '{ b: number; e: number; }'.(2345)
这么一说就明白了,谢谢指教
不知道是不是我理解有问题 T里面有a,b,c,d, U 里面有b,d T为什么还要去继承U ???