输入参数作为约束

使用 TypeScript 1.8,类型参数约束可以从同一类型参数列表中引用类型参数。以前这是一个错误。

 function assign<T extends U, U>(target: T, source: U): T {
    for (let id in source) {
        target[id] = source[id];
    }
    return target;
}

let x = { a: 1, b: 2, c: 3, d: 4 };
assign(x, { b: 10, d: 20 });
assign(x, { e: 0 });  // Error