gpt4 book ai didi

javascript - 使用附加属性创建数组

转载 作者:行者123 更新时间:2023-11-30 20:11:52 26 4
gpt4 key购买 nike

我正在使用我无法控制的现有第 3 方 API,这需要我传递一个具有附加属性的数组。类似于以下内容:

type SomeArgument = string[] & { foo: string };
doSomething (argument: SomeArgument);

现在我发现创建 SomeArgument 同时让编译器满意是非常笨拙和冗长的。

这个有效,但根本没有类型安全:

const customArray: any = ['baz'];
customArray.foo = 'bar';
doSomething(customArray);

另一个感觉更简洁但非常冗长的选项(我需要具有不同属性的不同子类)是子类化 Array:

class SomeArgumentImpl extends Array<string> {
constructor (public foo: string, content?: Array<string>) {
super(...content);
}
}
doSomething(new SomeArgumentImpl('bar', ['baz']));

有没有更好的单行方式?我希望在 doSomething({ ...['baz'], foo: 'bar' }); 中得到一些东西(显然这个不起作用)。

最佳答案

假设这是您要调用的函数:

function doSomething (argument: string[] & { foo: string }) {
argument.push("a");
argument.foo = "4";
console.log(argument);
}

然后你可以这样调用它:

// Works
doSomething(Object.assign(["a", "b"], { foo: "c" }));
// Error
doSomething(Object.assign(["a", 2], { foo: "c" }));
// Error
doSomething(Object.assign(["a", 2], { foo: 4 }));

关于javascript - 使用附加属性创建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52318400/

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