これまで, ソースコードはindex.tsファイルに書いてきました. プログラムもまとまってきましたので, ソースファイルを管理しやすくするために, ファイルを分割してモジュールを定義します.
1)ソースファイルを分割する
srcディレクトリにrpn.tsファイルを作り, index.tsファイルのほぼすべての内容, データ型の定義と関数定義をコピーします. index.tsファイルに関数定義を残したままにしておくと, コンパイラがエラーを報告します.
rpn.tsファイルのparse関数とcalc関数にexportを付けるとエラーが解消します.
この結果から分かったことは次の通りです.
- 新しく作ったrpn.tsファイルにindex.tsから関数をコピーしただけでは, rpn.tsファイルの内容はindex.tsと同じモジュールにあるものとして扱う.
- rpn.tsファイルで公開する関数にexportを付けるとrpn.tsファイルの内容を別のモジュールとして扱う.
TypeScriptの仕様を確認したわけではないので, 間違えていたらスミマセン.
2)モジュールから関数をインポートする
関数をインポートしてみます.
1行目のimport文を追加すると, コンパイルエラーは解消しました. この方法であれば, index.tsを修正せずに済みますが, rpn.tsファイルで定義してある関数であることを明示する方が私の好みです.
3)まとめ
この記事では, ソースファイルを分割してモジュールを定義する方法を調べました. ただし, この記事の内容はコンパイラの応答から推測した結果をまとめただけであり, 言語仕様などを確認する必要があります. また, 実行環境等によって違いがあるようなので注意が必要です.
最後に, この記事で使用したNode.jsとTypeScriptのバージョンは次の通りです.
PS C:\TSWork\Module> node --versionv14.17.5PS C:\TSWork\Module> .\node_modules\.bin\tsc --versionVersion 4.4.2PS C:\TSWork\Module>
0 件のコメント:
コメントを投稿