TypeScript: Call Signature
- Алик Ким
- 7 апр. 2023 г.
- 1 мин. чтения
спойлер: какая то бесполезная хрень.
Call Signature - тип или интерфейс, внутри которого помимо свойств есть еще типа одиноко стоящий делегат (ну, тип-метод)
type DescribableFunction = {
description: string;
(someArg: number): boolean;
};
так вот, это - возможность задать тип для функции (чего-то вызываемого), но с доп. свойствами.
JS-овская хрень. типа в JS так можно, значит и в TS должно быть. не очень понятно, где может пригодиться, но я в коде встречал нет-нет.
то есть, экземпляр такого можно вызвать как функцию, а можно читать свойства, как у объекта.
инстанциация :
1. просто объявляем функцию, а на следующей строке присваиваем свойство. типа в тайпскрипте такое специально разрешено, пишут.
const isEven: DescribableFunction = someArg => someArg % 2 === 0; isEven.description = "isEven" doSomething(isEven); // "isEven returned true"
2. или прям сходу:
const isNegative = Object.assign( (someArg: number) => someArg < 0, { description: "isNegative" } ); doSomething(isNegative);
Construct Signature
ключевое слово new перед ~делегатом позволяет использовать реализацию этого интерфейса как конструктор - с помощью ключевого слова new, опять же (Construct Signature).
еще более непонятно, зачем это надо. и люди пишут, что ваще экзотика
пытливый читатель спросит, а зачем я эту бесполезень выложил? отвечу: ну а я что, зря час разбирался с этим?? :)
Comments