Hej chciałbym typować obiekt gdzie wartość każdego klucza powinna być sprawdzana oddzielnie. Wartości w obiekcie są takiego typu:
interface Values<T extends any> {
value: T;
func: (p: T) => void;
name: string;
}
Wartość value ma być takiego samego typu jak parametr w funkcji func
Chciałbym otypować na raz wszystkie klucze i zastanawiam czy się da.
const obj: {
[key: string]: Values<any>;
} = {
aaa: {
name: 'aaa',
value: 123,
func: (aaa: number) => {
console.log(aaa);
},
},
bbb: {
name: 'bbb',
value: '123',
func: (aaa: string) => {
console.log(aaa);
},
},
ccc: {
name: 'ccc',
value: '123',
// tu chce błąd bo value jest string a parametr jest number
func: (aaa: number) => {
console.log(aaa);
},
},
};
Da się coś w ten deseń zrobić ? Czy musze niestety wymieniać wszystkie klucze osobno? W taki sposób:
const obj: {
aaa: Values<number>;
bbb: Values<string>;
ccc: Values<number>;
} = ...