Я хочу определить некоторые типы TypeScript, чтобы функция func1 могла быть вызвана следующим образом:
func1<G3>("propOfG3", { propOfG1:"test" } )
Для этого я начал с определений некоторых типов. Я поставил два вопросительных знака (??) в той части, которую я не знаю, как определить:
type G1 = {
propOfG1:string
}
type G2<A> = {}
type G3 = {
propOfG3: G2<G1>
}
function func1<T>(name: keyof T, o: ?? ) {}
Второй параметр o функции должен иметь тип G1 (в в данном случае), потому что G1 является общим c параметром типа propOfG3 .
Может ли кто-нибудь помочь мне понять, как это можно определить?
РЕДАКТИРОВАТЬ: вот пример использования:
type Person = {
surname:string
}
type Store<T> = {}
type Stores = {
people : Store<Person>
}
function save<TStore>(name: keyof TStore, o:?? ) {}
// call:
save<Stores>("people", { surname:"Laffer" })