1) В TypeScript, как я могу найти все классы, определенные на глобальном уровне?
2) Как я могу отфильтровать их суперкласс?TypeScript/JavaScript: как сканировать для всех глобальных классов (и фильтровать суперкласс)?
У меня есть классы моделей, которые распространяются на FrameModel
. Они не известны до выполнения (с возможностью подключения).
Так что я хочу получить список подклассов FrameModel
.
Это моя попытка:
public static scan()
{
this.mapping = {};
for (var i = 0; i < props.length; i++) {
var key = props[i];
var val = window[key];
console.log(`Key: ${key} Val: ${val} ${typeof val}`);
if (val == null)
continue;
if (typeof val !== 'function')
continue;
if (val.prototype == void 0)
continue;
if (val.prototype.constructor !== FrameModel)
continue;
this.mapping[key] == val; // Doesn't work
}
}
Что я считаю проблематична:
Использование
window
- скажем, это не будет работать в браузере. Тогда мне нужен глобальный объект вообще. В каком-то контексте я видел использование , IIRC в функции, вызываемой вне объекта, для получения глобального объекта. Это «официальный» способ?window[key]
не работает -Window
не присваиваемый TYPEOFFrameModel
Он сканирует весь реквизит
Window
, а не толькоFunctions
. Я предполагаю, что есть более разумный способ получить списокFunction
s.
TypeScript 1.8. Playground
Вы не можете делать то, что, если я определил мой класс в затворе? –
Хорошо, изменилось - мне нравятся только классы, определенные на глобальном уровне. Я не видел класс, определенный в закрытии в машинописном тексте, как это выглядит? –
Убейте его: https: // github.com/Microsoft/TypeScript/pull/3266 –