繁体   English   中英

Typescript 不同类型对象数组的类型

[英]Typescript Type for Array of Objects with different Types

我正在尝试为包含对象但具有不同类型的数组编写类型。

[
        {
            "id": "test",
            "answer": "1"
        },
        {
            "id": "test_multi",
            "answers": [
                {
                    "id": "skill_1"
                },
                {
                    "id": "skill_2"
                }
            ]
        },
]

我的第一个方法是:

prop: { id: string; answer: string | boolean | { id: string; answers: { id: string }[]} }[];

我想在这种情况下,我将不同的 object 分配给answer道具。

下一个方法

    { id: string; answer: string | boolean;  } | { id: string; answers: { id: string }[] }[];

但在这种情况下,我想我不允许数组被第一种 object 填充。

如何编写“此数组可以包含此 object 和/或此对象”的类型?

您可以像这样使用括号:

({ id: string; answer: string | boolean;  } | { id: string; answers: { id: string }[] })[];

我建议你改变输入。 很难使用“答案”/“答案”的不同变体。

你可以做这样的事情:

type Answer = string | boolean;
interface TestItem {
    id: string;
    answer?: Answer | Array<TestItem>;
}

const results: TestItem[] = [
        {
            "id": "test",
            "answer": "1"
        },
        {
            "id": "test_multi",
            "answer": [
                {
                    "id": "skill_1"
                },
                {
                    "id": "skill_2"
                }
            ]
        },
]

如果您想保留“答案”,请尝试以下操作:

type Answer = string | boolean;
interface TestItem {
    id: string;
    answer?: Answer;
    answers?: Array<TestItem>;
}

const results: TestItem[] = [
        {
            "id": "test",
            "answer": "1"
        },
        {
            "id": "test_multi",
            "answers": [
                {
                    "id": "skill_1"
                },
                {
                    "id": "skill_2"
                }
            ]
        },
]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM