TypeScriptの型の階層
値の型の序列の例
上がスーパータイプ、下がサブタイプ
上の方が広い、下のほうが狭い
Lang \sub string
例
tsunknown
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は
どんな型からも代入可能
どんな型にも代入可能
tslet an: any;
an = null; // ok
an = true; // ok
an = {}; // ok
let aaa: string = an; // ok
unknownは
どんな型からも代入可能
どんな型にも代入不可
anyには代入できる
tslet un: unknown;
un = null; // ok
un = true; // ok
un = {}; // ok
let unn: string = un; // error
let auu: any = un; // ok
unkwnonはそのまま使用できない