Open5

keyof neverがすべてのキーになることの図による説明

Nakano as a ServiceNakano as a Service

これを見るとkeyofX extends YのXとYを逆転させている。

X extends Y  ==>  (keyof Y) extends (keyof X);

Dog extends Animal  ==>  (keyof Animal) extends (keyof Dog);
Nakano as a ServiceNakano as a Service

↑がneverとunknownに対しても成り立つためには、以下のように定義されるのが自然である。

never extends unknown  ==>  (keyof unknown) extends (keyof never)
Nakano as a ServiceNakano as a Service
type KeyOfNever = keyof never // string | number | symbol
type KeyOfUnknown = keyof unknown // never

// 一方anyは...
type KeyOfAny = keyof any // string | number | symbol