gpt4 book ai didi

javascript - 在函数之间传递参数时出现 TypeScript 错误

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

此模式抛出 TypeScript 错误:

Argument of type '(string | number)[]' is not assignable to parameter of type 'string[] | number[]'

function foo(value: string | number) {
return bar([value]); // <- TypeScript error
}

function bar(valueList: string[] | number[]) {
..does something...
}

我理解这是因为 TypeScript 编译器会将其视为一个混合了字符串和数字的数组。

是否有类型安全的方法来完成此操作?我只能考虑转换为感觉不好的 any[]:

function foo(value: string | number) {
const valueList: any[] = [value];
return bar(valueList);
}

最佳答案

一种方法是 declaration merging ;为您的函数定义两个单独的接口(interface)(参见 function types ),然后是它的单个实现:

interface Foo {
(value: string): void;
}

interface Foo {
(value: number): void;
}

const foo: Foo = function (value) {
return bar([value]);
}

这将使两种类型分开,因为在任何给定时间只能调用其中一种接口(interface)。

关于javascript - 在函数之间传递参数时出现 TypeScript 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53656421/

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