0

我已经看到很多关于这个的问题,但答案总是涉及数组文字,这对我没有帮助......

例如我有一个像

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'.
4

0 回答 0