Невозможно использовать метод map, когда функция возвращает массив или число - PullRequest
0 голосов
/ 05 июня 2018

Когда я запускаю этот код ниже, он выдает ошибку: «[ts] Свойство 'map' не существует для типа 'number | number []'. Свойство 'map' не существует для типа 'number'"

const a = [
  1, 2, 3, 4, 5,
]

const testFunc : (data: number[], options?: string) => number[] | number = function (data: number[], options?: string) {
  if (options === 'array') return [1, 2, 3]
  return 1
}
const whichType = testFunc(a, 'array')
const double = whichType.map(item => item*2)
При наведении курсора «whichType» он показывает, что это число.Но на самом деле это не число Кто-нибудь знает, почему «whichType» не является «число []».

Спасибо.

1 Ответ

0 голосов
/ 05 июня 2018

whichType - это тип объединения number | number[].

. Чтобы использовать его, необходимо сузить его:

if (typeof whichType === 'number') {
    // It's a number
} else {
    // It's an array
    const double = whichType.map(item => item * 2);
}
...