Добавление типа в функцию в Typescript

#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. Конечно, но я хочу добавить тип (и использовать «линтер» для его проверки)