何
- TypeScriptのmodule(旧外部モジュール)機能について、書き方が2つあり、ネットの情報は新旧混ざっているため整理する。
- 参考)https://www.typescriptlang.org/docs/handbook/modules.html
書き方2つ
1.es6形式
2.「export = and import = require()」 形式 (何か名前ある?)
es6形式(ECMAScript2015形式)
- 例)
export interface StringValidator {
isAcceptable(s: string): boolean;
}
import { ZipCodeValidator } from "./ZipCodeValidator";
- 新しくモジュールを使う場合はこちらで良い
- TypeScript1.5から導入された模様
「export = and import = require()」 形式
- 例)
class ZipCodeValidator {
...
}
export = ZipCodeValidator;
import zip = require("./ZipCodeValidator");
- 「export =」 で、公開する要素を指定する。
- 「export =」 は、1つモジュールで1回しか使えない。(export single object)
- 「import xxx = require」 で、使用する要素を指定する。
- CommonJS/AMDのexportsオブジェクトの考え方に合わせているが、互換性はない。
- この形式のモジュールを"tsc --module es6"でコンパイルすると、以下のエラーが出る。
error TS1203: Export assignment cannot be used when targeting ECMAScript 2015 modules.
Consider using 'export default' or another module format instead.
(moduleをes6形式で書くか、諦めて"--module CommonJS"などにしなさいと言う意味)