К сожалению, машинопись не допускает частичного вывода переменных.Если вы хотите убедиться, что значение того же типа, что и свойство, указанное в key
, вам потребуется o использовать вспомогательную функцию для получения соответствующего поведения логического вывода:
type payload<T, K extends keyof T> = {prop: K, value: T[K]};
let someObj!: {a: string, b: number};
function getProp<K extends keyof typeof someObj>(o: payload<typeof someObj, K>) {
return o
}
const someObjPayload = getProp({ prop: 'a', value: 'some string'}) // ok of type payload<{ a: string; b: number; }, "a">
const someObjPayload2= getProp({prop: 'a', value: 100}) // error