keyof
дает вам тип объединения ключей данного типа.Так, например, если бы вы имели:
export SomeClass implements<{ name: string, val: number, active: boolean}>
... тогда B
будет "name" | "val" | "active"
.В этом случае C
также будет "name" | "val" | "active"
, поскольку Array<T>[0]
- это 0-й элемент массива с элементами T
, который равен T
.
Обратите внимание, что при работе интерфейсов TypeScript работают, implements
просто означает «проверьте, что эта реализация присваивается интерфейсу» и фактически не устанавливает типы классов по умолчанию.Это означает, что вам все равно придется делать B: "name" | "val" | "active"
, если вы хотите.Вы также можете просто сделать B: "name"
, так как этот тип присваивается типу объединения всех ключей.