#typescript #type-declaration
#typescript #объявление типа
Вопрос:
Предположим, я определяю функцию:
const nonEmpty = (str: string) => str.length > 0;
Теперь я добавляю тип к nonEmpty
подобному:
const nonEmpty : (str: string) => boolean = (str: string) => str.length > 0;
Он компилируется, но мне не нравится, что имя аргумента ( str
) появляется дважды. Более того, имя аргумента не имеет смысла добавлять имя аргумента к типу функции.
Я бы предпочел const nonEmpty : string => boolean = ...
или аналогичный. Возможно ли это в Typescript ?
P.S. Я нашел другой способ объявить тип функции:
const nonEmpty = (str: string): boolean => str.length > 0;
Это выглядит более лаконично, но немного странно для неопытного разработчика Typescript. Вы бы предпочли такое объявление типа?
Ответ №1:
Не стесняйтесь опускать второй string
тип:
const nonEmpty : (str: string) => boolean = (str) => str.length > 0;
nonEmpty('hello') // ok
nonEmpty(1) // error
Второй вариант:
type NonEmpty = (a: string) => boolean
const nonEmpty: NonEmpty = (str) => str.length > 0;
Ответ №2:
Также обратите внимание, что typescript может автоматически определять определение типа, поэтому вам может вообще не понадобиться явно добавлять его.
Комментарии:
1. Конечно, но я хочу добавить тип (и использовать «линтер» для его проверки)