Я хочу знать, возможно ли в машинописи что-то вроде:
func<T,V>(prop: keyof T: V) interface IIntf{ prop1: string, prop2: number } func<IIntf, string>(‘prop1’) //OK func<IIntf, string>(‘prop2’) //NOT OK (prop2 is of type number)
Это возможно, используя сопоставленные типы и вывод типа, как в следующем типе, который извлекает только ключи с указанным типом:
type ObjectKeysWithType<T, V> = { [K in keyof T]: T[K] extends V ? K : never }[keyof T];
Здесь используется следующая причина:
T[K] extends
V
{ .. }[keyof T
Playground Link