gpt4 book ai didi

interface - 在 Typescript 中混合接口(interface)

转载 作者:搜寻专家 更新时间:2023-10-30 20:35:28 26 4
gpt4 key购买 nike

我有一个包含 80 多个方法的类,每个方法都接受一个包含一些已定义接口(interface)的对象。

class Stuff {
/* many more */
getAccount(req: IAccount, callback: ICallback) {
return this._call('getAccount', req, callback);
}

getIds(req: IIDs, callback: ICallback) {
return this._call('getIds', req, callback);
}
/* many more */
}

非常“无聊”的东西,因为它只是映射到底层 _call 方法并使其对于每个方法都是类型安全的。

但有时这些 req param 对象由 2 个或更多接口(interface)组成,而不是每次都创建另一个接口(interface)有一个“尴尬”,就像这样:

export interface ILoled extends IAccount {
loled: boolean;
}

export interface IRofloled extends ILoled {
rofled: boolean;
}

class Stuff {
getLols(req: ILoled){
}

getRofls(req: IRofloled){
}
}

有什么方法可以将它作为方法参数列表中接口(interface)的“内联”混合?喜欢(这显然行不通):

class Stuff {
getMoreStuff(req: <{} extends IAccount, ITime>) {
}
}

最佳答案

是的,你可以,as of Typescript 1.6 .称为交集类型,使用&运算符组合类型。

function extend<T, U>(first: T, second: U): T & U {
let result = <T & U> {};
for (let id in first) {
result[id] = first[id];
}

for (let id in second) {
if (!result.hasOwnProperty(id)) {
result[id] = second[id];
}
}
return result;
}

var x = extend({ a: "hello" }, { b: 42 });
x.a; // works
x.b; // works

关于interface - 在 Typescript 中混合接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25615217/

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