Upgrade to Pro — share decks privately, control downloads, hide ads and more …

【TSKaigi2025】 集合論と構造的型制約で理解する中級へのステップ

Avatar for tochikawa tochikawa
May 24, 2025
2.1k

【TSKaigi2025】 集合論と構造的型制約で理解する中級へのステップ

TSkaigi2025で登壇した際の資料です

Avatar for tochikawa

tochikawa

May 24, 2025
Tweet

Transcript

  1. 2025 © PLEX, inc 9 前提として 型の区別や判定に関しては2つのアプローチがある💡 参考: サバイバルTypeScript ・型同士が同一かどうかを判断する際に、

    その型の名前が重要な役割を果たします ・JavaやC#で採用されている 名称的型付け ・型の名前ではなく、その構造に着目して型の区別や互換性を判定する ・TypeScriptはこっち 構造的型付け
  2. 2025 © PLEX, inc 14 今日一番伝えたいこと 型は「値の集合」 つまり集合論として捉えることができる TypeScript provides

    a number of mechanisms to work with types in a set-theoretic way, and you’ll find them more intuitive if you think of types as sets. 引用: TypeScript公式ドキュメント
  3. 2025 © PLEX, inc 27 役立つポイント①: 知識の吸収しやすくなるかも any型・unknown型・never型を集合論で置き換えると めちゃくちゃ分かりやすくなる any型

    string型 unknown型  全ての値を受け入れるので一番大きい集合 型アサーションなどが必要だが.... any型以外を内包する集合 number型
  4. 2025 © PLEX, inc 28 役立つポイント①: 知識の吸収しやすくなるかも any型・unknown型・never型を集合論で置き換えると めちゃくちゃ分かりやすくなる any型

    string型 never型 unknown型  全ての値を受け入れるので一番大きい集合 型アサーションなどが必要だが.... any以外を内包する集合 どんな値も受け入れない空集合 number型
  5. 2025 © PLEX, inc 29 役立つポイント①: 知識の吸収しやすくなるかも any型・unknown型・never型を集合論で置き換えると めちゃくちゃ分かりやすくなる any型

    string型 number型 never型 unknown型  全ての値を受け入れるので一番大きい集合 型アサーションなどが必要だが.... any以外を内包する集合 どんな値も受け入れない空集合 直感的に型を捉えられるので、新しい知識の吸収がしやすい 💡