能正常推导的例子
function createStore<R, E extends Record<string, (arg: R) => void>>(reducers: R, effects: E) {}
createStore(
{
hello() {},
},
{
world(arg) {
// 这里能自动推导 arg: { hello(): void }
arg.hello();
},
},
);
我封装库需要写成以下参数形式
function createStore<
R,
E extends Record<string, (arg: R) => void>
>(store: { reducers: R; effects: E }) {}
createStore({
reducers: {
hello() {},
},
effects: {
world(arg) {
// 这里无法推导 TS2571: Object is of type 'unknown'.
arg.hello();
},
},
});
有没有办法让下面这种 store 对象参数形式也支持类型自动推导?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.