JSONから指定された型のオブジェクトを返すために使用したいサービスがあります。Typescriptはジェネリック型の静的メソッドを呼び出す
私はクラスMyClass
を持っています。これは、FromJSON
静的メソッドを定義する静的クラスを実装しています。
export interface InterfaceMyClass {
static FromJSON(json: any): any;
}
export class MyClass implements InterfaceMyClass {
constructor(){}
FromJSON(json: any): MyClass {
let instance = MyClass.create(MyClass.prototype);
Object.assign(instance, json);
// Some other code specific to MyClass
return instance;
}
}
私のサービスでパラメータで渡したジェネリッククラスの静的メソッドを呼び出す方法がわかりません。 私のサービスは、次のようになります。
export class MyService<T extends InterfaceMyClass> {
getObject() {
let json = getExternalJson(...);
return T.FromJSON(json); // <-- How to call static method FromJSON from T class ?
}
}
私がサービスを使用するには、この方法をしたいと思います:
let service = new MyService<MyClass>();
let myObject = service.getObject(); // <-- Should by an MyClass instance (created by MyClass.FromJSON)
質問:私はこのT.FromJSON
メソッドを呼び出すことができますどのように ?
ボーナスに関する質問:どのような方法で静的メソッドを実装するのですか?私はMyClass
の私のメソッドは静的だとは思わない。私はFromJSON
前に静的な単語を追加する場合、それはこの私に語った:
[ts] Class 'MyClass' incorrectly implements interface 'InterfaceMyClass'.
Property 'FromJSON' is missing in type 'MyClass'.