Как я могу создать интерфейс Typescript, который также может принимать строку? - PullRequest
0 голосов
/ 08 мая 2020

Мне нужно создать интерфейс, который позволяет иметь массив объектов и строк.

Например:

const array = [
 '',
 {id: '', labels: ['']}
]

Я пробовал с:

export interface Obj{
  id: string;
  label: string[];
}

export interface Objs extends Array<Obj> {
}

Но это не разрешает строки, поэтому возвращается ошибка:

const array: Objs = [
 '',
 {id: '', labels: ['']}
]

Ответы [ 2 ]

2 голосов
/ 08 мая 2020

Вы должны использовать типы объединения:

export type Objs = Array<Obj | string>;
1 голос
/ 08 мая 2020

Если записи в массиве могут быть либо строками, либо объектами в форме {id: string; labels: string[]}, вы можете использовать тип объединения :

export type Obj = string | {id: string; labels: string[]};
const array: Obj[] = [
    "",
    {id: "", labels: [""]}
];

Пример игровой площадки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...