在打字稿中,我正在创建一个具有可选属性和方法的类。 在该类的方法中,我想访问类型属性(以类型安全的方式,如果它们存在的话)。
我试过这样:
class MyClass {
body?: string;
children?: MyClass[];
static subs(): MyClass[] | undefined {
if (this.children) {
return this.children;
}
}
}
并得到以下错误:
Property 'children' does not exist on type 'typeof MyClass'.ts(2339)
我怎样才能做到这一点?
答案 0 :(得分:2)
静态方法无法访问实例属性。
以下作品:
class MyClass {
body?: string;
children?: MyClass[];
subs(): MyClass[] | undefined {
if (this.children) {
return this.children;
}
return undefined
}
}
但可以简化为:
// ...
subs(): MyClass[] | undefined {
return this.children;
}
反射(即在运行时访问类型信息)是不容易实现的。您可以 list properties 一个对象,但您只能获得 javascript 类型。