我有一个服务,希望使用它来返回从JSON构建的指定类型对象。
我有一个类MyClass,它实现了一个静态类,该静态类定义了一个FromJSON静态方法。
我希望以以下方式使用该服务:
我有一个类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
方法是静态的。如果我在FromJSON
之前添加static关键字,它会告诉我这个:
[ts] Class 'MyClass' incorrectly implements interface 'InterfaceMyClass'.
Property 'FromJSON' is missing in type 'MyClass'.
new MyService<MyClass>()
而不是new MyService(MyClass)
。 - jmjohnson85