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
- 比方說,它不會在瀏覽器中運行。然後我需要一個全局對象。我已經看到在某些情況下使用this
,IIRC在一個被稱爲對象之外的函數中獲取全局對象。這是「官方」的方式嗎?window[key]
不起作用 -Window
是不能分配給TYPEOFFrameModel
它掃描的所有
Window
道具,不只是Functions
。我認爲有一些更明智的方法可以獲得Function
的列表。
TypeScript 1.8。 Playground
你不能做到這一點,如果我在一個封閉定義我的課? –
好的,改變了 - 我只關心在全球範圍內定義的類。我在打字稿中沒有看到在閉包中定義的類,這是怎麼樣的? –
明白了:https:// github。com /微軟/打字稿/拉/ 3266 –