Open3

「プロを目指す人のためのTypeScript入門」読書メモ

Yui SatoYui Sato

第1章 イントロダクション

基本的なTypeScriptの情報について。意外と知らないことが多い。

  • TypeScriptには型注釈と型推論という機能をもつ
  • TypeScriptは2012年10月に一般公開され今では3ヶ月に1回の頻度でリリースがされている
    • 2023年12月時点での最新版は5.3.3
  • TypeScriptに限らず静的型付けは型安全性とドキュメント化というメリットをもたらす
  • TypeScriptコンパイラは型チェックとトランスパイルの2つの役割をもつ
  • TypeScriptはECMAScriptの機能をサポートしており、プロポーザルがステージ3に到達することが条件になっている

https://github.com/Microsoft/TypeScript/releases

https://github.com/tc39/proposals

Yui SatoYui Sato

第2章 基本的な文法・型

ひとこと

number型の精度の誤差やNaNの扱いは気に掛けていきたい。

主なポイント

  • プログラムは文と式に分けられる。文と式の違いは結果があるかどうか。
  • 変数名として使える識別子にはひらがな・カタカナ・漢字も使用可能
  • letは宣言時に値を代入しなくてもよい(undefinedが初期値)
  • 可読性・メンテナンス性の観点から極力constを使う → 同感
  • プリミティブ型は、文字列・数値・真偽値・BigInt・null・undefined・シンボルの7種類
  • 数値リテラルは「_」を挟むことが許されている
  • TypeScriptの数値はIEEE754倍精度浮動小数点数であり±53ビット以上の数値を表す場合には下の桁から精度が落ちていく
  • テンプレートリテラルは文字列リテラルと違い、改行(エスケープ記法を使わず)・変数展開ができる
  • JavaScriptの文字列はUnicode(UTF-16)で表現できる
  • 仕様のサポートの厚さから、nullとundefinedどちらを使うか判断に迷ったらundefinedを選択する
  • Numberでキャストする場合、nullは0に、undefinedはNaNになる
  • BigIntはNaNに相当する値を持たないため変換できない値を受け取るとランタイムエラーを発生させる
  • 副作用とは返り値を返す以外に発生する影響のこと
  • 比較は数値だけでなく文字列に対しても可能(頻度は少ないが)
  • ===、!==は値だけでなく型の一致も比較している
  • ==、!=は基本的に使用せず、nullとの比較のみ検討する(undefinedを厳密に分けて考えるかどうか)
  • NaNは比較演算子において全てfalseを返すので代わりにNumber.isNan(x)を使う
  • ??は||と違い、左値がnullまたはundefinedのときのみ右値を代入する(ex. "" ?? v は""になる)
  • 論理代入演算子(&&=・||=・??=)は必要がなければ再代入すら発生しない
  • TypeScriptのコンパイルエラーには4桁の番号が付与されている。ちなみに文法エラーは1000番台。