Closed7

【プロを目指す人のためのTypeScript入門】アウトプット

TatsukiTatsuki

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

初級者だけでなく、中級者の人も改めて学びに繋がる可能性が大

Typescriptの歴史や、Typescriptの最大の特徴である「静的型付け」がなぜ必要か丁寧に解説されている。
また、Typescriptの開発環境構築についても丁寧に書かれているため、初学者も躓くことが少ないのではと感じた
(Node.jsの環境さえ準備できていれば)

[以降、自分のアウトプット]

  • AltJSという言葉は正直初めて聞いた(お恥ずかしい)
    • AltJS : Javascriptの代替となる言語を指す
  • 静的型付けのメリット
    • 型安全性
    • ドキュメント化
      • ドキュメント化については「確かに」と思った。コードを書く = その機能のドキュメントを書くようなものと受け取れば良さそう
      • Pythonも同じ
  • ランタイムの挙動が型情報に依存しない
    • ランタイム = 実行時
    • Typescriptが活きる時は、コンパイル時
  • Typescriptの独自機能は出来る限り使わない方が良い
    • 現在のTypescriotの方針にそぐわないため
    • 例 : enum, namespaceなど
TatsukiTatsuki

第2章 基本的な文法・基本的な型

初学者は読み込んだ方が良い、中級者・上級者の人は流し読みでよさそう

基本的な型の説明や、forやifなどの原理や書き方について詳細に解説
そのため、中級者以上の方は流し読みで良いと思うが、文と式の違いなど、改めて言語化されている内容もあるため、読んでみると新たな発見があって面白いかもしれない

  • 文と式の違いは"結果"の有無
    • 文 => const test: string = "test"
      • 正確には宣言という
    • 式 => const test_text: string = test + test1
    • 式文という考え方もある
      • 与えられた式をただ実行するだけ
  • letを出来る限り使用しないという点については、丁寧に言語化されていて初学者の方にも非常に良さそう
    • 「プログラムにより多くの保証が与えられている方が、読む側が考慮しなければいけない可能性が少なくなり、読みやすいプログラムとなる」
  • || と ?? の違い
    • II : 対象のパラメータがfalseの場合のみ、右側に記載したパラメータの評価が行われる
      • 0や、""(ブランク)時にも、右側に記載したパラメータの式が評価される
    • ?? : 対象のパラメータがnull または undefinedの時のみ、右側に記載したパラメータの評価が行われる
      • 値がないという判定に特化
    • この辺は使い分けかなという印象。不具合の原因にもなりやすそうなので注意
      • inputに入力された文字列を判定するときなど
TatsukiTatsuki

第3章 オブジェクトの基本とオブジェクトの型

Reactなどで何となく使っていたオブジェクトの操作を整理できる

自分のように、Reactなどのフレームワークに対する学習と共に、Typescriptの使い方を何となく学習してきた人には、かなりおすすめできる
実務でもREST APIから取得したデータやCSVから取得したデータを加工するときに使えるヒントがたくさんある

  • typeはstringなどにも付与することができる。objectだけではない
  • interfaceはobjectのみ
    • ほとんどの場合にはinterfaceはtypeで代用可能。typeのみを基本的に使用する流派もいるらしい
  • インデックスシグネチャ : 任意のプロパティ名を許容する型
    • Typescriotの型安全性を破壊するため非推奨
    • Mapオブジェクトで代用可能 => 代用方法は後ほど
  • 部分型関係
    • 下記条件を満たす場合に、SはTの部分型と言える
      • Tが持つプロパティは全てSにも存在する
      • 条件1の各プロパティについて、Sにおけるそのプロパティの型はTにおけるプロパティの型の部分型(または同じ型)と言える
    • Typescriptにおける部分型は「構造的部分型」と言われる
      • オブジェクトのプロパティを実際に比較して、部分型かどうか判定する
      • 他言語では「名前的部分型」と言われる
        • 明示的に「この型はこの型の部分型である」と宣言する
  • 分割代入(restパターン)や、Date、正規表現まで書いてある
TatsukiTatsuki

第4章 TypeScriptの関数

特にジェネリクスの部分について目を通しておく価値がある

関数の宣言や変数のスコープまで細かく解説されている
前半部分についてはTypescriptでコードを書いている人は流し見でもよさそうだが、後半のジェネリクス部分については再度読んで理解を深める価値はありそう
実際にコードを書きながらがおすすめになりそう

  • 関数もオブジェクトの一種である
  • ジェネリクスについては勉強になった
    • 実務中で、どのような場面で使用するのかイメージがついていない
TatsukiTatsuki

第5章 Typescriptのclass

classについては現状実務で使っていないのでスキップ
しかし流し見したところ、thisの使い方を含めて詳細に記載されているため、
必要になったタイミングで読み直すのはあり

どういったときにclassを使うのか?

TatsukiTatsuki

第6章 高度な型

リテラル型のwideningについては、Typescriptらしさを感じれた
const test = "uhyo"を入れると、testはstring型ではなく、"uhyo"型になる

  • Typescriptの「無い」には2種類ある
    • 型にない
    • 実際にない ( = 値としてない)
  • exactOptionalPropertyTypesは有効にした方がよさそう
    • age?: numberなどoptionalで表現したとき、ageにundefinedを設定することができないようにすることが可能
  • オプショナルチェイン : ?.はそれ以降のプロパティアクセス / 関数呼び出し / メソッド呼び出しをまとめてスキップする
    • 例: foo?.buzz.toString() のようなパラメータがあったとき、fooがnullやundefinedの場合にはbuzz以降の処理をスキップする
  • リテラル型のwidening
    • const uhoy1 = "uhyo" // データ型は"uhyo"
    • let uhyo2 = "uhyo" // データかたはstring
      • letは再代入が前提のため
    • また、obeject内でも同様
      • object内の各プロパティはwideningによって、自動的にnumberやstringのプリミティブな型推論になる
    • ただし、wideningされるのは型推論で推論されたもののみ
  • nullのパラメータに対して、typeofで評価すると"object"になる
  • !やasをを使わずに同じプログラムを書けた方がより良い
    • asなどはTypeScriptの強力な型推論を破壊するため
このスクラップは2024/02/06にクローズされました