Я использую эту идиому в javascript для создания цепочек сеттеров.
function bar() {
let p = 0;
function f() {
}
f.prop = function(d) {
return !arguments.length ? p : (p = d, f);
}
return f;
}
Это позволяет мне легко создавать и настраивать как const b = bar().prop(2)
, имея b
в качестве функции и добавление более цепочек утверждений. И это работает для получения свойства с помощью b.prop()
, который, конечно, не может быть далее соединен.
Я пытаюсь преобразовать это в TypeScript и нашел это решение, которое хотя и позволяет правильно печатать , это кажется неясным.
p.prop = (...args: [number?]) => !args.length ? p : (p = args[0]!, f);
Это становится еще более неясным, когда для аргумента есть несколько типов.
p.prop = (...args: [(number | boolean)?]) => !args.length ? p : (p = args[0]!, f);
Есть ли какой-либо идиоматический c машинописный способ сделать эту настройку и получать?