💨

{}, object, unknown, Record<string, unknown>

2024/09/11に公開

まとめ

値の種類 unknown {} object Record<string, unknown>
オブジェクト (レコード)
オブジェクト (レコード以外)
プリミティブ
null
undefined

整理すると理解が進みますね。

確認用コード

let v1: {};

v1 = 100
v1 = true
v1 = "hello"
v1 = { a: 1 }
v1 = [1]
v1 = null       // 型エラー
v1 = undefined  // 型エラー

let v2: object;

v2 = 100        // 型エラー
v2 = true       // 型エラー
v2 = "hello"    // 型エラー
v2 = { a: 1 }
v2 = [1]
v2 = null       // 型エラー
v2 = undefined  // 型エラー

let v3: unknown;

v3 = 100
v3 = true
v3 = "hello"
v3 = { a: 1 }
v3 = [1]
v3 = null
v3 = undefined

let v4: Record<string, unknown>;

v4 = 100       // 型エラー
v4 = true      // 型エラー
v4 = "hello"   // 型エラー
v4 = { a: 1 }
v4 = [1]       // 型エラー
v4 = null      // 型エラー
v4 = undefined // 型エラー

Discussion