我正在尝试实现一个通用函数,它接受函数和数据的接口,并将结果从一个传递到另一个。
推断已经出错,任何帮助将不胜感激。 链接到无法编译的CodeSandbox代码
推断已经出错,任何帮助将不胜感激。 链接到无法编译的CodeSandbox代码
function InitViewModel<S, C, M>(params: {
state: S;
computed: (s: S) => C;
methods: (s: S, c: C) => M;
}) {
const state = params.state;
const computed = params.computed(state);
const methods = params.methods(state, computed);
return {
state,
computed,
methods
};
}
export const VM = InitViewModel({
state: { message: "This Will Be Infered As expected" },
computed: (state /* infered */) => ({
computedMessage: state.message + " But This Will Not"
}),
methods: (state /* infered */, computed /* inferred wrong */) => {
return {
logName: () => console.log(state.message),
logComputedName: () => console.log(computed.computedMessage) // Does not compile
};
}
});
computed.computedMessage
不存在,因为computed
是一个函数。返回值有computedMessage
,所以computed(someStatus).computedMessage
应该更有意义。但我不明白你想做什么。 - DanieleAlessandraC
。这可能是这两个功能工作方式的限制。也许其他人有一些想法... - Titian Cernicova-Dragomir