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
それはFunctions
だけではなく、Window
のすべての小道具をスキャンしFrameModel
をTYPEOFに帰属ありません。
Function
のリストを取得するには、よりスマートな方法があると思います。
TypeScript 1.8。 Playground
あなたはそれを行うことはできません、:https://nodejs.org/api/globals.html#globals_global
はtypescriptですためのWebPACKを設定しますか? –
変更されました - 私はグローバルレベルで定義されたクラスのみを気にします。私は、型付きのクロージャで定義されたクラスを見たことがありません。どのように見えますか? –
入手してください:https:// github。com/Microsoft/TypeScript/pull/3266 –