当前位置:  开发笔记 > 编程语言 > 正文

签名为Object.assign in typescript?

如何解决《签名为Object.assignintypescript?》经验,为你挑选了1个好方法。

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

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

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

 data.foo //compiler error

U Avalos.. 5

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

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

所以#extend的实现看起来像这样:

 function extend(target: T, source: U): T & U;
 function extend(target: T, source1: U, source2: V): T & U & V;
 function extend(target: T, source1: U, source2: V, source3: W): T & U & V & W;
 function extend(target: any, ...sources: any[]): any {
    //implementation
 }

但是,如果存在es6.d.ts,那么这就引出了我们是否应该使用它而不是自定义#extend的问题.



1> U Avalos..:

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

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

所以#extend的实现看起来像这样:

 function extend(target: T, source: U): T & U;
 function extend(target: T, source1: U, source2: V): T & U & V;
 function extend(target: T, source1: U, source2: V, source3: W): T & U & V & W;
 function extend(target: any, ...sources: any[]): any {
    //implementation
 }

但是,如果存在es6.d.ts,那么这就引出了我们是否应该使用它而不是自定义#extend的问题.

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有