{
a: string;
b: number;
};
fn <SomeObject> ('a', '01'); // -> OK
fn <SomeObject> ('a', 23); // -> ERROR
fn <SomeObject> ('b', '45'); // -> ERROR
fn <SomeObject> ('b', 67); // -> OK
fn <SomeObject> ('c', '89'); // -> ERROR
Точно можно сделать похожую типизацию, если передавать в функцию объект SomeObject, но мне это не подходит
Только так получилось: type TypeMap = { [k: string]: unknown; } class SomeClass<T extends TypeMap>{ fn<K extends keyof T, V extends T[K]>(key: K, value: V) { } } type SomeObject = { a: string; b: number; }; let someClass = new SomeClass<SomeObject>() someClass.fn("a", "1"); someClass.fn("b", 2);
Обсуждают сегодня