ペロハム大学

ヤルゾー

プロを目指す人のための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ディレクトリに保存される。importrequireで使ってみよう
  • フロントエンド開発でも必要なモジュールは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_modulespackage.jsonの依存関係に従ってインストールされたディレクトリだけど・・その内容を表すスナップショット的なもの!
  • 主な役割はnode_modulesの情報を保持することで、再現性を高めること
  • 人間が触ることは基本的にない

@types

  • TypeScript向けの型定義が同梱されていないパッケージは、そのままだとコンパイルエラーとなる・・
  • npmはTypeScript専門ではなくJavaScript向けのため、結構ありがち
  • こういう時は@typeパッケージをインストールすれば手っ取り早いよ
    • パッケージに同梱されていない型定義を補ってくれる
    • 例えばnpm install expressだけだとexpressは型定義がない=型チェック不可でコンパイルエラーになるんだけど、npm install -D @types/expressで型情報をインストールすればエラーが消える
    • 補足!-dpackage.jsondevDependencieshに書き込んでねの意、型定義はコンパイルの時にしか使わないので…
  • ちなみに@typeパッケージは基本的に有志による。日本語化MODみたいだあ・・

自前で型定義を作るには

  • .d.tsで終わるファイルに書けばOK、この名前で作ればTypeScriptが型定義ファイルとして扱ってくれるぞ
  • declare modual "モジュール名"で特定のモジュール文字に対して型定義を宣言できる

■ 感想

Node.jsのモジュールって便利な共通部品みたいなものなのね! Va11-hall全ルートやった!めっっちゃ良い話。鋼鉄心臓少女がサントラに入ってないのだけつらい、この曲流れるとかなり雰囲気出るんだ・・Truthとちょっと似てるからかな?アナとドロシーの関係はたまらん。シロナガス島でもアウロラとアレックスが好きだったので…