Вы просто хотите типы поиска .Если T
является типом объекта и K
является типом одного из его ключей (или объединением таких ключей), то T[K]
является типом значения для этого ключа (или объединением типов значений).для этих ключей):
var nId1: PersonClass["nationalId"];
var nId2: PersonalType["nationalId"];
Если вы чувствуете необходимость определить GetProp
, это довольно просто без условных типов:
type GetProp<T, K extends keyof T> = T[K];
или если вы должны разрешить K
который нельзя назначить на keyof T
:
type GetProp<T, K extends keyof any> = K extends keyof T ? T[K] : never;
или если вы действительно хотите использовать условные типы infer
и , вам нужен сопоставленный тип, такой какRecord
:
type GetProp<T, K extends keyof any> = T extends Record<K, infer V> ? V : never;
Но на самом деле простой способ поиска - это, на мой взгляд, путь.
Надеюсь, это поможет.Удачи!