Получить тип из интерфейса и удалить массив - PullRequest
0 голосов
/ 27 мая 2020

У нас есть интерфейс, определенный следующим образом:

interface IInitialInterface {
   stack: string,
   overflow: {
      a: string,
      b: string
   }[],
}

Как я могу создать тип только с свойством переполнения, удаляющим массив? Если я сделаю:

type TypeSearched = IInitialInterface['overflow']

Тогда я получу:

type TypeSearched = {
    a: string,
    b: string
}[]

Но я хочу удалить массив.

Спасибо.

Ответы [ 2 ]

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

свойство переполнения в этом случае не "типизировано", вы можете сделать это

interface IInitialInterface {
   stack: string,
   overflow: IOverflow[],
}

interface IOverflow {
   a: string,
   b: string
}

Затем вы можете напрямую ссылаться на IOverflow или через IInitialInterface

type TypeSearched: IOverflow; 
1 голос
/ 27 мая 2020

Чтобы получить тип элемента массива, вы можете развернуть его с помощью ArrayType[number]. Это возвращает тип, который был бы возвращен, если бы вы обратились к этому массиву с любым числом.

type TypeSearched = IInitialInterface['overflow'][number]
// { a: string; b: string; }

Однако более чистый подход заключался бы в построении частей из названных маленьких частей, а не на разборке больших шт.

interface TypeSearched {
   a: string,
   b: string
}

interface IInitialInterface {
   stack: string,
   overflow: TypeSearched[]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...