Cno*_*ode 6 javascript oop decorator typescript
我想知道为什么当我在类中使用 Typescript 中的装饰器或注释时。编译器无法推断该类的新类型。如果我不使用装饰器并使用 ES5 中的旧方法来执行此操作(即手动调用装饰器),它显然可以工作。
例如,这里有一个显示问题的示例:
function decorate(Target: typeof Base): IExtendedBaseConstructor {
return class extends Target implements IExtendedBase {
public extendedtMethod(): number {
return 3;
}
};
}
interface IBase {
baseMethod(): number;
}
interface IExtendedBase extends Base {
extendedtMethod(): number;
}
interface IExtendedBaseConstructor {
new(): IExtendedBase;
}
@decorate
class Base implements IBase {
public baseMethod(): number {
return 5;
}
}
const test = new Base();
test.baseMethod(); // OK
test.extendedtMethod(); // NOT OK, typescript think, Base is still Base but we decorated it.
Run Code Online (Sandbox Code Playgroud)
使用旧方法,它可以工作:
class Base implements IBase {
public baseMethod(): number {
return 5;
}
}
const ExtendedBase = decorate(Base);
const test = new ExtendedBase();
test.baseMethod(); // OK
test.extendedtMethod(); // OK
Run Code Online (Sandbox Code Playgroud)
提前致谢。
| 归档时间: |
|
| 查看次数: |
1716 次 |
| 最近记录: |