Получить тип элемента каждого индекса массива со смешанными типами - PullRequest
4 голосов
/ 13 июля 2020

У меня есть смешанный массив, например:

const array = [false, 1, '', class T {}];

Чей тип:

type arrayType = typeof array; // (string | number | boolean | typeof T) []

И тип объекта в любом индексе:

string | number | boolean | typeof T

Как я могу получить тип объекта из указанного c индекса, как показано ниже, вместо объединения типов?

const a = array [0] // should be boolean
const b = array [1] // should be number
const c = array [2] // should be string
const d = array [3] // should be typeof T

TS Playground

1 Ответ

5 голосов
/ 13 июля 2020

Вам необходимо использовать кортеж. Вы можете указать тип явно или заставить TS выводить тип кортежа, используя утверждение as const:

const array = [false,1,''] as const;


type arrayType = typeof array; /// readonly [false, 1, ""]

Playground Link

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