我已经看到很多关于这个的问题,但答案总是涉及数组文字,这对我没有帮助......
例如我有一个像
interface Foo {
[key: string]: Bar;
}
我很想能够做类似的事情
function getFooMap(myFoo: Foo): Map<string, Bar> {
return new Map(myFoo)
}
但我得到了错误
TS2345: Argument of type 'Foo' is not assignable to parameter of type 'readonly (readonly [{}, {}])[]'.
Type 'Foo' is missing the following properties from type 'readonly (readonly [{}, {}])[]': length, concat, join, slice, and 16 more.
我也尝试将方法签名定义为
Array<[string, string]
function getFooMap(myFoo: Array<[string, Bar]): Map<string, Bar> {
return new Map(myFoo)
}
但是问题是由于某种原因我不能将 Foo 转换为 Array<[string, Bar] 。
下面的代码将其具体化。我真的认为它应该有效,但显然没有,但我无法弄清楚正确的方法是什么。
export interface Foo {
[key: string]: Bar
}
const myFoo: Foo = [
{key: "key1", value: {}},
{key: "key1", value: {}},
{key: "key1", value: {}}
]
我得到错误
TS2322: Type '{ key: string; value: {}; }' is not assignable to type 'Bar'.
Object literal may only specify known properties, and 'key' does not exist in type 'Bar'.