源有 X 个元素,但目标只允许 1 个

Sha*_*ani 7 typescript angular

打字稿编译显示此错误:

源有 X 个元素,但目标只允许 1 个。

export const FooMapping: [{id: FooOperation, display: string}] = [
    { id: FooOperation.Undefined, display: 'Nothing' },
    { id: FooOperation.A, display: 'I'm A' },
    { id: FooOperation.B, display: 'I'm B' }
];

export enum FooOperation {
    Undefined = 0,
    A = 1,
    B = 2,
}
Run Code Online (Sandbox Code Playgroud)

定义特殊对象数组的正确方法是{id: FooOperation, display: string}什么?

Paw*_*Zaw 76

我有同样的问题。大括号必须位于类型之后:

const FooMapping: [{id: FooOperation, display: string}] 
Run Code Online (Sandbox Code Playgroud)

应该

const FooMapping: {id: FooOperation, display: string}[] 
Run Code Online (Sandbox Code Playgroud)

记住这一点的简单方法是将对象替换为类型,然后看看它是否有意义:

[string]不起作用,但string[]确实有效


pza*_*ger 16

[{id: FooOperation, display: string}]定义了一个元素的元组

尝试:

export const FooMapping: Array<{id: FooOperation; display: string}> = [
    { id: FooOperation.Undefined, display: 'Nothing' },
    { id: FooOperation.A, display: "I'm A" },
    { id: FooOperation.B, display: "I'm B" }
];
Run Code Online (Sandbox Code Playgroud)

或者想想类似的事情:

interface Foo {
  id: FooOperation;
  display: string;
}

export const FooMapping: Foo[] = [...];
Run Code Online (Sandbox Code Playgroud)