打字稿:从方法访问可选的类属性

时间:2021-02-18 12:58:48

标签: typescript class methods

在打字稿中,我正在创建一个具有可选属性和方法的类。 在该类的方法中,我想访问类型属性(以类型安全的方式,如果它们存在的话)。

我试过这样:

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)

我怎样才能做到这一点?

1 个答案:

答案 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 类型。