From 2f8982e2b7ce225e93ff3a3415b35ad744afbd3d Mon Sep 17 00:00:00 2001 From: yo-goto <50942816+yo-goto@users.noreply.github.com> Date: Fri, 19 Jan 2024 20:48:10 +0900 Subject: [PATCH] =?UTF-8?q?update:=20=E8=A6=8B=E5=87=BA=E3=81=97=E3=81=AE?= =?UTF-8?q?=E3=83=AC=E3=83=99=E3=83=AB=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../advanced-topics/mental-model-of-types.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/docs/reference/advanced-topics/mental-model-of-types.md b/docs/reference/advanced-topics/mental-model-of-types.md index 75a420ac..3afb769b 100644 --- a/docs/reference/advanced-topics/mental-model-of-types.md +++ b/docs/reference/advanced-topics/mental-model-of-types.md @@ -2,7 +2,9 @@ sidebar_label: 型のメンタルモデル --- -# 型システムの背景理論 +# 型のメンタルモデル + +## 型システムの背景理論 プログラミング言語の型システムにはそれぞれ固有の世界観があり、言語ごとにできること (型の機能) が異なります。 @@ -14,6 +16,12 @@ sidebar_label: 型のメンタルモデル ただし、型理論は非常に奥深く難解でもあるため、一般にはとっつきにくい分野です。その一方で、比較的簡単に理解できて実用的にも役立つ概念も非常に多くあります。このドキュメントではそういった知識から TypeScript の型の世界観、いわば**メンタルモデル**を構築するための知識を紹介します。 -逆に、型理論の知識をもっておくことで一般化された型についての知識を使えるため、プログラミング言語をスイッチするような場合にはスムーズに機能の類推や学習を行うことができるようになります。 +## 集合論的なデザイン + +一般に型(type)は集合(set)は異なる概念ですが、型理論と集合論には密接な関連があります。 + +特に TypeScript においては、型を集合論的に扱えるようなデザインが意図的になされており、型を「**値の集合**」として捉えることで直感的に型を理解することができるようになっています。この見方は決して偏ったものではなく、[公式ドキュメントでも推奨されている](https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes-oop.html#types-as-sets)型の考え方です。 + +本章では、このような集合論的な見方に立って型を考えることで、型の振る舞いについての自然な推論を行えるようなメンタルモデルを構築します。 型理論は非常に奥深く難解でもあるため、とっつきにくい分野に思えますが、比較的簡単に理解できて実用的にも役立つ概念も非常に多くあります。このドキュメントではそういった知識から TypeScript の型の世界観、いわばメンタルモデルを構築するための知識を紹介します。