Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript:从方法访问可选类属性_Typescript_Class_Methods - Fatal编程技术网

Typescript:从方法访问可选类属性

Typescript:从方法访问可选类属性,typescript,class,methods,Typescript,Class,Methods,在typescript中,我创建了一个具有可选属性和方法的类。 在该类的方法中,我希望访问类型属性(以类型安全的方式,如果它们存在的话) 我试过这样做: class-MyClass{ 正文?:字符串; 儿童?:MyClass[]; 静态subs():MyClass[]|未定义{ 如果(这是儿童){ 把这个还给孩子们; } } } 并得到以下错误: Property 'children' does not exist on type 'typeof MyClass'.ts(2339) 如何实现

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

我试过这样做:

class-MyClass{
正文?:字符串;
儿童?:MyClass[];
静态subs():MyClass[]|未定义{
如果(这是儿童){
把这个还给孩子们;
}
}
}
并得到以下错误:

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

静态方法无法访问实例属性

以下工作:

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

  subs(): MyClass[] | undefined {
    if (this.children) {
      return this.children;
    }
    return undefined
  }
}
但可以简化为:

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

反射(即在运行时访问类型信息)不容易实现。您可以选择对象的类型,但只能获得javascript类型