Может ли Typescript гарантировать, что массивы имеют повторяющийся тип? например, [строка, число, строка, число, .... (навсегда)] - PullRequest
1 голос
/ 09 апреля 2020

У меня есть функция, которую я хочу обеспечить, принимает строку, за которой следует число. И, необязательно, больше пар строк номеров. Так же, как кортеж, но «бесконечное» время:

const fn = (...args: [string, number] |
[string, number, string, number] |
[string, number, string, number, string, number] |
[string, number, string, number, string, number, string, number] | ...etc etc) => {}

и т. Д.

Альтернативная конструкция типа псевдо:

type Pair = [string, number, ...Pair];

Возможно ли это с помощью TypeScript?

РЕДАКТИРОВАТЬ Похоже, это должно работать, но не работает. Кажется, что TypeScript неправильно определяет порядок пар.

type Pair = [string, number, ...Pair[]];

1 Ответ

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

Я верю в это. Вы бы определили тип как

type RecurringTuple = [string, number, RecurringTuple[]];
const fn = (...args: RecurringTuple) => {}

Не тестировал, но нашел аналогичный случай в этой ссылке .

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