Объявить необязательный последний элемент в массиве? - PullRequest
0 голосов
/ 16 февраля 2020

Я хочу объявить тип массива Typescript, в котором последний элемент является необязательным. Есть ли какой-нибудь элегантный способ добиться этого?

const test = (a: [string, string, any | undefined]) => console.log(a)
test(['foo', 'bar'])

В вызове функции test(...) ts подробно изложить эту ошибку

Argument of type '[string, string]' is not assignable to parameter of type '[string, string, any]'.
  Property '2' is missing in type '[string, string]' but required in type '[string, string, any]'.(2345)

Ответы [ 2 ]

4 голосов
/ 16 февраля 2020
const test = (a: [string, string, any?]) => console.log(a)
test(['foo', 'bar'])

Надеюсь, это поможет.

0 голосов
/ 16 февраля 2020

Лучшим шаблоном было бы использование обобщений, поэтому вам не нужно объявлять типы для каждого из элементов массива следующим образом const test = (a: Array<string|undefined|null>) => console.log(a) test(['foo', 'bar', ,"etc"]). Это позволяет вам создать массив со строковыми или неопределенными / нулевыми элементами.

...