首页 > 解决方案 > 打字稿:从方法访问可选的类属性

问题描述

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

我试过这样:

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)

我怎样才能做到这一点?

标签: typescriptclassmethods

解决方案


静态方法不能访问实例属性。

以下作品:

class MyClass {
  body?: string;
  children?: MyClass[];

  subs(): MyClass[] | undefined {
    if (this.children) {
      return this.children;
    }
    return undefined
  }
}

但可以简化为:

 // ...
 
  subs(): MyClass[] | undefined {
    return this.children;
  }

反射(即在运行时访问类型信息)并不容易。您可以列出对象的属性,但您只能获得 javascript 类型。


推荐阅读