Нет формальной перегрузки оператора ()
, но метод ES5
отлично работает и в современном JS.
Что касается истории Typescript, ваш код работает почти так же, как в Typescript 3.1
function interpolator(value: number) {
return value
}
interpolator.invert = function () { }
interpolator.setDomain = function (a : number, b: number) { }
interpolator.setRange = function (a: number, b: number) { }
// and the use like so
interpolator.setDomain(0, 1)
interpolator.setRange(50, 200)
let rangeValue = interpolator(0.5) // 125);
Ссылка Playgrounk
Это связано сновой функции в 3.1 под названием присваивания свойств в объявлениях функций .
До версии 3.1 вам требуется дополнительное пространство имен для достижения правильно типизированной функции с дополнительными членами
function interpolator(value: number) {
return value
}
namespace interpolator {
export function invert() { }
export function setDomain(a: number, b: number) { }
export function setRange (a: number, b: number) { }
}
// and the use like so
interpolator.setDomain(0, 1)
interpolator.setRange(50, 200)
let rangeValue = interpolator(0.5) // 125);
Ссылка Playgrounk