TypeScript: условный тип внутри того же типа / интерфейса - PullRequest
2 голосов
/ 29 апреля 2020

Я пытаюсь заставить условную типизацию работать и не уверен, что то, что я думаю, возможно сделать или нет. Вот так:

type AParams = {
    hello: string

}
type BParams = {
    world: string
}

type Data = {
    name: "a" | "b",
    data: AParams | BParams
}

В зависимости от name, являющегося a или b, я хочу, чтобы data имел тип AParams или BParams соответственно. Как это можно сделать с помощью TypeScript?

Ответы [ 2 ]

2 голосов
/ 29 апреля 2020

Вы можете использовать два разных интерфейса для двух случаев, таких как:

interface AData {
    name: "a",
    data: AParams
}

interface BData {
    name: "b",
    data: BParams
}

, а затем установить Data, используя типы объединения, такие как:

type Data = AData | BData;
0 голосов
/ 29 апреля 2020

Ваш Data тип может быть следующим вместо:

type Data = {
    name: "a"
    data: AParams
} | {
    name: "b"
    data: BParams
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...