使用AMD

时间:2015-07-22 16:05:00

标签: javascript typescript amd

我是Typescript和模块处理的新手。在我的项目中,我使用Typescript编写开发浏览器库的代码。因此我使用AMD。以下是tsconfig.json文件。

{
  "compilerOptions": {
    "target": "ES5",
    "outDir": "out",
    "module": "amd"
  },
  "files": [
    "src/main.ts",
    "src/communication.ts",
    ...
  ]
}

档案communication.ts是:

export module MyProj.DataExchange {
  export interface Communication {
    connect(uri: string): void;
    close(): void;
    status: int;
  }
}

引用其他文件中的组件

我想在Communication中使用main.ts

import communication = require('./communication');
export module MyProj {
  export class Communicator 
    implements communication.MyProj.DataExchange.Communication {
    ...
  }
}

我想避免使用整个签名communication.MyProj.DataExchange.Communication。所以我尝试了类似的东西:

import communication = require('./communication').MyProj.DataExchange;

但它没有用。

我的问题

我有一种感觉,我在这里做错了什么。在这里我的问题:

  • 我按照应该做的方式做事吗?
  • 如何避免对导入的组件使用整个名称?
  • 如果你可能告诉我不要使用module,我需要将我的组件分成名称空间。那么如果我做错了怎么正确设置命名空间呢?

1 个答案:

答案 0 :(得分:1)

在Typescript 1.4中引入了Type Aliases

您的代码可能适合使用这样的别名:

import communication = require('./communication')
type Communication = communication.MyProj.DataExchange.Communication;
export module MyProj {
  export class Communicator 
    implements Communication {
    ...
  }
}