代码之家  ›  专栏  ›  技术社区  ›  Greg Wozniak

从TypeScript转换为JavaScript后,子实例中无法访问父方法

  •  0
  • Greg Wozniak  · 技术社区  · 3 年前

    我有以下TypeScript类:

    class AnyBackendRoute {
       public getProps() {...}
    }
    
    class AnyBFFRoute extends AnyBackendRoute {
       public getProps() {...}
    }
    
    class UserSignUpRoute extends AnyBFFRoute {
       public getSomethingElse() {...}
    }
    

    我将它们转换为commonJS-ES6,并将它们包含在另一个文件(.js)中。

    在原始代码中(在测试文件中,在编译之前),我可以很容易地做到:

    const route = new UserSignUpRoute()
    
    // getProps() visible from AnyBFFRoute as it's a public method
    console.log(route.getProps())
    

    但当我对transpiled代码(其中还包含.d.ts文件)尝试同样的操作时,我会得到一个TypeScript错误:

    Type 'UserSignUpRoute' is missing the following properties from type 'AnyBFFRoute': getProps

    在转换后的代码中,我希望能找到以下内容:

    UserSignUpRoute.prototype.getProps = function () {
        return this.props;
    };
    

    但它不在那里!同样,在适当的情况下 .d.ts 文件我看不见 getProps() 方法,但仅限于本地公共方法。

    我认为这些方法应该在 用户注册路由.js

    如果是,为什么存在不一致,以便我可以调用 route.getProps() 在预传输的代码中而不是之后?

    0 回复  |  直到 3 年前
    推荐文章