TypeScript: определение вызываемого типа без свойств CallableFunction - PullRequest
0 голосов
/ 29 марта 2020

Давайте объявим тип T с подписью вызова:

type T = () => number;

Давайте также объявим переменную t этого типа:

declare const t: T;

На площадке TypeScript или IDE, мы сразу видим, что t типа T имеет множество методов и свойств, которые мы никогда не объявляли явно: apply, bind, caller и т. д.

Как мы объявляем T, чтобы он определялся только своей подписью вызова? (TS 3.8.3 +)

Примечательно, что тип Omit<T, "apply" | "bind" | "caller"> равен {}, а также Omit<T, "">. Кроме того, Omit<CallableFunction, ""> не является вызываемым типом согласно tsc.

1 Ответ

1 голос
/ 29 марта 2020

Для основных типов (строка, число и функция Да) вы не можете сделать это из объявлений типов.

Создание собственной среды

Скомпилируйте с --noLib и включите свои собственные определения в свои someFile.d.ts для interface String, interface Function и c.

Определения будут по-прежнему применяться глобально ко всем string / number / Function et c. Например, если вы не включите .bind, он не будет присутствовать для любых функций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...