gpt4 book ai didi

typescript1.7 - typescript 中 Object.assign 的签名?

转载 作者:行者123 更新时间:2023-12-04 23:42:09 30 4
gpt4 key购买 nike

typescript 中 Object.assign 的正确签名是什么?
我们已经实现了一个类似 jquery 的 #extend 函数(类似于 Object.assign)。
不幸的是,编译器无法识别扩展对象。

 function extend<T>(dst : Object, ...src : Object[]) : T { //... }

const data = extend({}, {foo: 'foo'});

data.foo //compiler error

最佳答案

根据 https://github.com/Microsoft/TypeScript/blob/master/src/lib/es6.d.ts ,这是 Object.assign 的声明:

 assign<T, U>(target: T, source: U): T & U;
assign<T, U, V>(target: T, source1: U, source2: V): T & U & V;
assign<T, U, V, W>(target: T, source1: U, source2: V, source3: W): T & U & V & W;
assign(target: any, ...sources: any[]): any;

所以#extend 的实现看起来像这样:
 function extend<T, U>(target: T, source: U): T & U;
function extend<T, U, V>(target: T, source1: U, source2: V): T & U & V;
function extend<T, U, V, W>(target: T, source1: U, source2: V, source3: W): T & U & V & W;
function extend(target: any, ...sources: any[]): any {
//implementation
}

但是,如果 es6.d.ts 存在,那么我们是否应该使用它而不是自定义 #extend..

关于typescript1.7 - typescript 中 Object.assign 的签名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34407706/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com