TypeScriptで任意の文字列を受け取るが、ある程度の定数を補完したい場合、|'aaa'|'bbb'|(string&{})
で定義できる。
これの objectの属性版では{ aaa?: number, bbb?: number, [key: string]: unknown }
と定義する。
JSDocでは以下のように定義する。
Record<string, unknown> & { aaa?: number, bbb?: number } |
{}
で定義するとLinterに怒られる。なのでRecord
を使う。
Don't use `{}` as a type. `{}` actually means "any non-nullish value". |
なお警告では Record<string, never>
を使えと書いてありますが、この記事では Record<never, never>
を使えと書いてある。