我面临一个问题,我想让对象中的每个记录都有不同的值类型,但却出现了以下错误:
1-"TSearchInput"可以用任意类型实例化,该类型可能与"RotatingItemSearchInput"无关
2-"K"可以用任意类型实例化,该类型可能与"数字"无关
我创建了这个简单的演示:
class RotatingItemSearchInput {}
class OtherItemSearchInput {}
const rotatingItemService = (input: RotatingItemSearchInput) =>
new Promise((res: (val: number) => void) => res(1));
const otherItemService = (input: OtherItemSearchInput) =>
new Promise((res: (val: string) => void) => res('result'));
const filtersMap: Record<
string,
<TSearchInput, K>() => {
searchInput: TSearchInput;
search: (searchInput: TSearchInput) => Promise<K>;
}
> = {
rotatingItem: () => ({
searchInput: new RotatingItemSearchInput(),
search: (searchInput) => rotatingItemService(searchInput),
}),
otherItem: () => ({
searchInput: new OtherItemSearchInput(),
search: (searchInput) => otherItemService(searchInput),
}),
};
如果你能帮我解决这个问题,我将不胜感激。
游乐场
查看此
interface Obj<T, K> {
[key: string]: {
searchInput: T;
search: (val: T) => Promise<K>;
};
}