【发布时间】:2023-03-21 22:35:01
【问题描述】:
有什么方法(特殊语法)可以将 rest 之类的参数应用于 TypeScript 中的模板?
如果问题不清楚,请查看以下示例和 cmets。
问题是 - 我可以在这里申请休息...Types:
function mixIt<A, B> (a: A, b: B): A & B;
function mixIt<A, B, C>(a: A, b: B, c: C): A & B & C;
/*
* ??
* If I would like to add D, E, F, etc, do I have to overwrite it like above?
*/
function mixIt<A, B, C>(...args: any[]): any{
let mixin = <A & B & C> {};
args.forEach( obj => {
for(let key in obj) {
if( ! mixin.hasOwnProperty(key) ) {
(<any>mixin)[key] = obj[key];
}
}
});
return mixin;
}
仅供参考 - 错误检测符合预期:
class X {x: number = 7;}
class Y {y: string = 'ok';}
class Z {z: boolean = false;}
let x = new X;
let y = new Y;
let z = new Z;
let xy = mixIt(x, y);
let xyz = mixIt(x, y, z);
xyz.z; // Ok;
xy.z; // Error - as expected. VS Code editor also highlights it
【问题讨论】:
-
github.com/Microsoft/TypeScript/issues/…
ORgithub.com/Microsoft/TypeScript/issues/… -- 这两个链接中给出的示例似乎可以解决问题。
标签: typescript generics