活字体: 私は方法getTableDataとのDataProviderクラスのメソッドがあります。活字体は:ジェネリッククラスにパラメータとしてジェネリック型を渡す
public static getTableData<T extends DataObject>(type: { new(): T}): Array<T> { ... }
これは完璧に動作したとき、私のコード:
let speakers = DataProvider.getTableData(Speaker); // where Speaker is a class
これをジェネリッククラスから呼びたいと思います。
export class ViewModelBase<T extends DataObject> {
public getData(): Array<T> {
return <T[]> DataProvider.getTableData(T);
}
}
私はを取得します。名前 'T'が見つかりません getTableDataに渡すTパラメータのエラーです。 getTableDataはどのように呼び出す必要がありますか?
更新: @Paleoの助けを借りて、私はこの思い付いた:私はそれがためにViewModelになりたいという class SpeakerViewModel extends ViewModelBase<Speaker> { ... }
:事は、私はすでに言われているが、ということである
export class ViewModelBase<T extends DataObject> {
constructor(private dataObjectClass: { new(): T}){}
public getTableData(): Array<T> {
return <T[]> DataProvider.getTableData<T>(this.dataObjectClass);
}
}
をSpeaker
私はまだインスタンス化のようSpeakerViewModel
あります
let vm = new SpeakerViewModel(Speaker);
ですが、私はすでにそれが約Speaker
であると言いました。私はまだこれを完全に理解していないと思う。
内部から呼び出された方法を参照してくださいT 'どこにも定義されていません。 – Paleo
_ "私はそれをSpeakerのViewModelにして欲しいです。私はまだSpeakerViewModelをインスタンス化しています:' let vm = new SpeakerViewModel(Speaker); '" _すみません、私は混乱しています。あなたはそれを言い換えることができますか?省略したいコードは何ですか? –