Ага, спасибо. На всякий допишу тут ещё 2 поинта (если вдруг у читателей возникнут вопросы). Во первых, для типов/интерфейсов нет разницы в поведении между стрелочной и "обычной" формой, как для объектов js (значения this, super, и т.д.), и реализовывать в классе можно и так и сяк, что видно в примере. Во вторых, если нужны перегрузки, то, например, аналогом такого для "обычной" формы
interface IA {
setValue(a: number | string): void;
setValue(a: boolean): boolean;
}
будет такой код
interface IA {
setValue: {
(a: number | string): void;
(a: boolean): boolean;
};
}
Ага, спасибо. На всякий допишу тут ещё 2 поинта (если вдруг у читателей возникнут вопросы). Во первых, для типов/интерфейсов нет разницы в поведении между стрелочной и "обычной" формой, как для объектов js (значения this, super, и т.д.), и реализовывать в классе можно и так и сяк, что видно в примере. Во вторых, если нужны перегрузки, то, например, аналогом такого для "обычной" формы
будет такой код
Просто надо по возможности использовать "стрелочную" форму, тогда всё будет окей.
Забавно, что даже для тайпгардов можно обойтись без any, если использовать бивариантную функцию: