组织打字稿定义以避免重复的代码

时间:2017-04-10 16:17:50

标签: javascript typescript module typescript-typings requirejs-optimizer

  

现状:

在:

中定义了一个类

LIB /组件/部件/ MyWidget.ts:

export class MyWidget {

    public property1: string;
    /* ... more properties ... */

}

它被编译为javascript,与其他文件捆绑在一起作为 lib-min.js

的结果

因为它位于 lib / components / widgets / MyWidget.ts 中,我已经定义了“集合”文件( mydefinition.d.ts ),如:

declare module "lib/components/widgets" {
    export class MyWidget {

        /* documentation of property1 */
        public property1: string;

        /* ... more properties ... */
    }
}

interface MyOption {/* ... */}

通过这种方式,它可以像(当然在将 lib-min.js 包含在页面中后)一样使用:

import { MyWidget } from "lib/components/widgets/MyWidget";

let myInstance = new MyWidget();
  

问题:

我认为很明显,保持这种重复是压倒性的,并且容易导致错误。 升级到typescript 2+(从1.8.9开始)后,我得到了“重复标识符”的几个编译错误,通常它不像以前那样工作。

  • 我可以创建一个像IMyWidget这样的界面并将其暴露给公众,但是后来实现丢失了,无法用新的
  • 创建
  • 我可以从 mydefinition.d.ts 中删除“declare module ...”,但是模块加载器将找不到该模块(因为r.js优化器从其中命名模块)路径)
  

问题

是否有一种干净且“便宜”的方法来解决这个问题(如果可能的话,避免代码重复)?

0 个答案:

没有答案