generated at
TypeScriptの型の階層

値の型の序列の例
上がTop型、下がBottom型
上がスーパータイプ、下がサブタイプ
上の方が広い、下のほうが狭い
Lang \sub string
ts
unknown 42|"hoge" "hoge" type Lang = "Haskell" | "TypeScript" | "Idris" // string union type Hs = "Haskell" // string literal never










'Hoge' や、 42 は、1集合であることに注意
42 集合には、「42」という値が入る
never は空集合
何の値も入らない





anyとunknownの差
anyは
どんな型からも代入可能
どんな型にも代入可能
ts
let an: any; an = null; // ok an = true; // ok an = {}; // ok let aaa: string = an; // ok
unknownは
どんな型からも代入可能
どんな型にも代入不可
anyには代入できる
ts
let un: unknown; un = null; // ok un = true; // ok un = {}; // ok let unn: string = un; // error let auu: any = un; // ok
unkwnonはそのまま使用できない