我正在创建一个接收多个键和值的函数,并且应该返回一个具有这些键及其各自值的对象。值类型应与我调用该函数时传递的值匹配。
目前,该代码可以运行,但类型不准确。
我尝试使用工厂方式,希望打字稿能为我推断一些东西。
这是工厂的代码。另外,这里还有一个游乐场。
const maker = (subModules?: Record<string, unknown>) => {
const add = <Name extends string, Q>(key: Name, value: Q) => {
const obj = {[key]: value};
return maker({
...subModules,
...obj
})
}
const build = () => {
return subModules
}
return {
add,
build
}
}
const m2 = maker()
.add('fn', ({a, b}: { a: number, b: number }) => a + b)
.add('foo', 1)
.add('bar', 'aaaa')
.build()
// m2.foo -> 1
// m2.bar -> …Run Code Online (Sandbox Code Playgroud)