プロを目指す人のためのTypeScript入門 読書メモ⑪ 第7章
■ 思ったこと
久しぶりに新しい章に来た!そしてサクっと終わった!
■ 第7章 TypeScriptのモジュールシステム(7.1~7.4.4)
モジュールシステム
- モジュールシステムって、多数のファイル(=モジュールも)に分割してプログラムを作る仕組みのこと!
- データを提供するモジュール、機能(関数)を提供するモジュールなどいろいろ、うまく分解しよう
- TypeScriptでは1ファイル1モジュールがほとんど
- exportでほかのモジュールに提供、importで受け取る!
export
export const 変数
すればおけexport{x1,x2}
てな感じで、変数リストでまとめてエクスポートもできる、asで別名も使える
import
- エクスポートされた変数は
import {変数リスト} from "./xxx.js"
でインポートすれば使える。asで別名で受け取ることもできる- 拡張子が実際はtsでもimport宣言時は.jsなので注意!
- ファイルパスで
./
の省略はできない - import文はどこに書いても良いけど、だからこそファイルの先頭にまとめて書くのが一般的
defaultエクスポート・インポート
export default 式
でエクスポートすると、import 変数名 from モジュール名;
でインポートできるのよ- ここの変数名は、好きなものでOK!インポート側で決められるのだ
- 実際、あまり使われない。入力補完も効かないしね・・
一括インポート
import * as 変数名 from モジュール名
で、変数名の中にexportされたすべての変数を持つオブジェクトが代入される。変数名.変数
で使おう!
ところでNode.jsって
- TypeScripteの実行環境として使ってたね
- 例えば
readline
もNode.jsがデフォルトで持っているモジュールをインポートして使ったわけだけど…
Node.jsの組込みモジュール
- 組込みモジュールとは、追加でインストール不要…Node.jsに最初っから備わっているモジュールのこと!importすれば使えるよ
- importする際に、fromが
./
から始まらないのはそういった、外部モジュールと見なしてOK、npmするやつとか
npm
- Node.jsに同梱されるパッケージマネージャ
- npmでインストールしたパッケージは
node_modules
ディレクトリに保存される。import
やrequire
で使ってみよう - フロントエンド開発でも必要なモジュールはnpmインストールするのが慣例
package.json
- Node.jsのプロジェクトは
package.json
を持っている- プロジェクトのルート(一番上!)に配置される設定ファイル
- Node.jsでプログラムが実行される時に読み込まれる
- 依存関係を記述する役割もあり
npm init
で作成されるので、それからnpm install パッケージ名
で必要なパッケージをインストールしよう
dependencies / devDependencies
- プロジェクトが依存するライブラリの一覧をバージョンとともに記述する
dependencies
は実行時に必要なライブラリdevDependenciesh
はビルドするときに必要なライブラリ
- npm installしたらpackage.jsonも更新されるよ
- 逆に!手でpackage.jsonにライブラリを書き込んでnpm install実行するとそれがインストールできる
package-lock.json
- npmが動作する際に自動で作成されるファイル
node_modules
はpackage.json
の依存関係に従ってインストールされたディレクトリだけど・・その内容を表すスナップショット的なもの!- 主な役割は
node_modules
の情報を保持することで、再現性を高めること - 人間が触ることは基本的にない
@types
- TypeScript向けの型定義が同梱されていないパッケージは、そのままだとコンパイルエラーとなる・・
- npmはTypeScript専門ではなくJavaScript向けのため、結構ありがち
- こういう時は
@typeパッケージ
をインストールすれば手っ取り早いよ - ちなみに
@typeパッケージ
は基本的に有志による。日本語化MODみたいだあ・・
自前で型定義を作るには
.d.ts
で終わるファイルに書けばOK、この名前で作ればTypeScriptが型定義ファイルとして扱ってくれるぞdeclare modual "モジュール名"
で特定のモジュール文字に対して型定義を宣言できる
■ 感想
Node.jsのモジュールって便利な共通部品みたいなものなのね! Va11-hall全ルートやった!めっっちゃ良い話。鋼鉄心臓少女がサントラに入ってないのだけつらい、この曲流れるとかなり雰囲気出るんだ・・Truthとちょっと似てるからかな?アナとドロシーの関係はたまらん。シロナガス島でもアウロラとアレックスが好きだったので…