Я хочу сопоставить тип объекта подтипу, который включает только ключи, значения которых имеют определенный тип.
Например, что-то вроде ExtractNumeric<T>
, где
ExtractNumeric<{ str: string, num: number }>
должен быть эквивалентен типу: { num: number }
Я пробовал это, но это не работает:
type ExtractNumeric<T> = { [k in keyof T]: T[k] extends number ? T[k] : never }
Этот фрагмент кода выдает ошибку типа:
let obj: ExtractNumeric<{ str: string, num: number }> = { num: 1 }
Поскольку ключ str
ожидает значение never
, компилятор жалуется на его отсутствие.