【问题标题】:Develop/Organize a node module in TypeScript在 TypeScript 中开发/组织节点模块
【发布时间】:2017-03-31 09:03:44
【问题描述】:

我想在 TypeScript 中开发一个节点模块,但我在 require、import 等所有可能的选项方面遇到了一些问题。

我现在正在做的是将每个类和接口都放在它自己的文件中。所以我需要要求所有的依赖项,这有点愚蠢,因为我输入了两次类名,如下所示:

import Target = require('./Target');

export interface IFace {

    getTarget(): Target.Target
}

我可以改写import t = require('./Target');,但是我需要写t.Target,我认为这也很丑。

而且我不能给它一个模块名(比如FaceApp),因为当我需要导入两个文件时,会出现命名冲突。

如果所有内容都保存在一个文件中,显然不需要这样做,但我认为这远非最佳。

那么你们是如何在 TypeScript 中组织节点模块的呢?我很高兴听到您的建议。

【问题讨论】:

    标签: node.js typescript node-modules


    【解决方案1】:

    您可以使用export = 语法来避免名称重复。即做:

    class Target{}
    export = Target;
    

    而不是export class Target

    grunt-ts 转换器还可以帮助您解决导入语句爆炸:https://github.com/grunt-ts/grunt-ts/issues/85#issue-29515541

    【讨论】:

    • 啊...我没有想过这个。谢谢。
    【解决方案2】:

    recommended by TypeScript的做法

    export default class Target {}
    

    然后您可以使用

    进行真正的打字稿导入
    import Target from './Target'
    

    或者,您可以重命名它

    import NewName from './Target'
    

    另请注意,您可以从一个文件中导出多个相关的内容

    export class SomeClass {}
    export class OtherClass {}
    

    在导入时,您可以更改名称

    import { SomeClass as MySomeClass, OtherClass as MyOtherClass } from './Target'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-03
      • 1970-01-01
      • 2018-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-25
      • 2021-12-07
      相关资源
      最近更新 更多