Когда я компилирую следующий код (который мне кажется неправильным, потому что тип const
и тип функции ()
различны) никаких ошибок не производятся:Как определить тип массива Машинопись параметров функции
export const yearsExtractor: (Period) => Year[] = (periods: Period[]): Year[] => periods && periods.length ? periods.map((period: Period) => period.year) : <Year[]>[];
Когда я компилирую следующий код (который мне кажется правильным, потому что тип const
и тип матча функция ()
) производится ошибка:
export const yearsExtractor: (Period[]) => Year[] = (periods: Period[]): Year[] => periods && periods.length ? periods.map((period: Period) => period.year) : <Year[]>[];
разница в том, что код, который не компилируется, объявляет const
как функцию, которая принимает массив из Period
объектов (в отличие от одного объекта Period
).
ошибка
(Period[]) =>
нет ошибки
(Period) =>
У вас всегда есть обязательное имя до оптимального типа аннотаций. Поэтому Period является именем параметра в этой позиции, а [] недопустим в этой позиции ... – Lucero