Как создать псевдоним типа для несвязанной универсальной лямбды в машинописи? - PullRequest
0 голосов
/ 20 сентября 2018

Я хотел бы упростить следующую конструкцию:

const lambda: <T>(source: Thing<T>) => Other<T> = <T>(source: Thing<T>) => ...

, введя псевдоним типа:

type Lambda<T> = (source: Thing<T>) => Other<T>;
const lambda: Lambda<T> = <T>(source: Thing<T>) => ...

При этом я получаю следующую ошибку в объявлениилямбды: не могу найти имя 'T'

Как правильно указать тип лямбды?

1 Ответ

0 голосов
/ 20 сентября 2018

Существует причина, по которой это не работает: Lambda - это универсальный тип, который не является универсальной функцией (как только вы укажете их для Lambda, этот тип устанавливается в камне для функции. Оригинальная функция с другой стороныявляется универсальной функцией, она может принимать любой параметр типа при вызове.

Чтобы определить псевдоним типа для универсальной функции, синтаксис:

type Lambda = <T>(source: Thing<T>) => Other<T>;
const lambda: Lambda = <T>(source: Thing<T>) => ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...