Я пытаюсь написать библиотеку, которая проверяет функцию обратного вызова, а затем вызывает ее, когда она будет готова. Идея состоит в том, что вы можете включить JS асинхронно, а затем, когда он будет загружен, он проверит обратный вызов и выполнит его.Функция вызова дескриптора, которая может отсутствовать во время компиляции
Я использую машинопись. Следующий JS работает, но привычка компилировать в TS
if(typeof myFramework.ready === 'function') {
myFramework.ready();
}
Затем разработчик с помощью библиотеки можно было сделать следующее:
var myFramework = myFramework || {}; // As the framework wont exists
myFramework.ready = function(){//Execute developer's code};
Однако, используя машинопись Я получаю ошибку типа: Property «готов» не существует в типе 'typeof myFramework', что не является неожиданностью. Он компилируется, если я делаю следующее:
interface Window {
ready(): void;
}
if(typeof window.ready === 'function') {
window.ready();
}
Но это означало бы добавление большего количества к объекту окна. И я предполагаю, что вызов глобального метода ready() вполне может стать точкой отказа!
Как бы вы это сделали?
Благодаря @ Джеймсе-межскважинной - как я классы в отдельных файлах файл, который имел обработку немного Ajax в посмотрел что-то вроде:
module MyFramework {
export interface IMyFramework {
ready? :() => any;
}
export class HasLoaded implements IMyFramework {
doReady = (framework: IMyFramework) => {
if(typeof framework.ready === 'function') {
framework.ready();
}
}
}
var newHost: HasLoaded = new HasLoaded();
newHost.doReady(MyFramework);
}
I может быть переосмысление логики, которая получила меня здесь, но это отдельная проблема!
Спасибо, я дам это! –