Mapped typesを扱う時、よくstring | number | symbol
が出てきますよね?実はこれと同じ型が PropertyKey
というビルトイン型であります。
type keys = PropertyKey; // string | number | symbol
実は、これと同じものは keyof any
から導出できます。ただ、微妙に違いがあります。
keyofStringsOnly オプションの有無によって keyof any
の挙動が異なります。
// "keyofStringsOnly": true type keys1 = keyof any; // string type keys2 = PropertyKey; // string | number | symbol
// "keyofStringsOnly": false type keys1 = keyof any; // string | number | symbol type keys2 = PropertyKey; // string | number | symbol