Skip to content

UnknownRecord

キーも値も分からないオブジェクトです。

typescript
type Data = UnknownRecord;

使用法

UnknownRecord

{} の代わりに使います。{} は名前に反して、nullundefined 以外の数値や文字列まで受け取ってしまいます。値が unknown なので、読み取る前に確認が必要です。

typescript
import type { UnknownRecord } from 'es-toolkit/types';

function log(data: UnknownRecord) {
  if (typeof data.id === 'string') {
    console.log(data.id);
  }
}

log({ id: '1' }); // 通ります

// log(42); // エラーです。`{}` なら通ってしまいます。

注意点

インデックスシグネチャを持つ型だけが代入できます。interface はキーを 1 つずつ宣言するため拒否されます。

typescript
interface Payload {
  id: string;
}

type PayloadAlias = { id: string };

declare const payload: Payload;
declare const alias: PayloadAlias;

const a: UnknownRecord = alias; // 通ります
// const b: UnknownRecord = payload; // 形は同じですが、インデックスシグネチャがないのでエラーになります。

interface が渡ってくる可能性のある場所では object で受け取るか、渡す側で { ...payload } のように展開してください。

MIT ライセンスの下で配布されています。