Est*_*ask 7 static-members typescript
这段代码使用Babel和TypeScript进行转换,并按预期工作.
class ParentClass {
static staticProp = true;
method() {
console.log(this.constructor.staticProp);
}
}
class ChildClass extends ParentClass {
static staticProp = false;
}
(new ChildClass).method();
Run Code Online (Sandbox Code Playgroud)
这里的要求是引用当前类(through this.constructor)的静态属性而不是显式提及类,因此可以继承该方法并在子类中使用相关的静态属性.
它可以用于Babel,TypeScript也可以编译它,但它会抛出
错误TS2339:属性'staticProp'在类型'Function'上不存在.
在编译.
如何处理这种情况以取悦TypeScript编译器?
Mar*_*cka 10
TypeScript目前仅支持ClassName.staticPropertyName语法.然而,有一个悬而未决的问题要求简化它.
你也可以将你包裹staticProp在一个吸气剂中.这很麻烦,但至少它不像语言黑客:
class ParentClass {
static staticProp = true;
method() {
console.log(this.staticProp);
}
get staticProp(): boolean { return ParentClass.staticProp; }
}
class ChildClass extends ParentClass {
static staticProp = false;
get staticProp(): boolean { return ChildClass.staticProp; }
}
(new ChildClass).method();
Run Code Online (Sandbox Code Playgroud)
我能够让TypeScript保持沉默
class ParentClass {
static staticProp = true;
method() {
console.log((<typeof ParentClass>this.constructor).staticProp);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4572 次 |
| 最近记录: |