在typescript中,我创建了一个具有可选属性和方法的类。在该类的一个方法中,我想访问类型属性(以一种类型安全的方式,所以如果它们存在的话)。
我试过了:
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)
我该如何做到这一点?
静态方法不能访问实例属性。
以下工作:
class MyClass {
body?: string;
children?: MyClass[];
subs(): MyClass[] | undefined {
if (this.children) {
return this.children;
}
return undefined
}
}
,但可以简化为:
// ...
subs(): MyClass[] | undefined {
return this.children;
}
反射(即在运行时访问类型信息)不容易实现。你可以列出一个对象的属性,但是你只能得到javascript的类型。