interface Function {
next(next: Function): Function;
prev(prev: Function): Function;
}
Function.prototype.next = function(next) {
const prev = this;
return function() {
return next.call(this, prev.apply(this, arguments));
};
};
Function.prototype.prev = function(prev) {
const next = this;
return function() {
return next.call(this, prev.apply(this, arguments));
};
};
const f1 = function() { console.log("f1"); };
const f2 =() => console.log("f2");
const f3 = new Function("console.log('f3');");
f1.next(f2).next(f3)();
Я хотел сделать что-то плохое и расширить прототип функции в компиляторе на языке ES6. Хотя этот код хорошо работает на игровой площадке TypeScript, он терпит неудачу в tsc 1.8.10 (свойство <<name>>
не существует в типе «Функция»), поскольку оно не может слиться с определением функции в lib.es6.d.ts.Сглаживание TypeScript Функциональный интерфейс, продление Функциональный прототип
Любые идеи, как это сделать должным образом?
Тогда TSC не видит методы, такие как вызов и применять, в основном все, что было объявлено в lib.es6.d.ts. Я хотел бы объединить эти определения. – m1gu3l
См. Мое редактирование, которое я подтвердил. –
src/utils/Function.augment.ts (13,15): ошибка TS2339: Property 'call' не существует в типе 'Function'. – m1gu3l