TypeScript トップ型とボトム型
TypeScriptの型システムにおいて、すべての型を包含する最も抽象的な型はunknown型。unknown型の変数にはどんな型の値でも代入可能。unknown型をすべての型のスーパータイプとして見ることで、その振る舞いを直観的に理解可能。
逆に、すべての型のサブタイプとなるのはnever型。空集合はすべての集合の部分集合であり、never型はこの空集合に相当する。つまり、never型には実際の値が存在せず、どんな値もこの型の変数に代入することはできない。number型とstring型のインターセクション型がnever型になるのも、number型でありながらstring型でもある要素が存在しないため。
型システムでは、すべての型を包含するunknown型をトップ型と呼び、すべての型に含まれるnever型をボトム型と呼ぶ。