小编Gab*_*bba的帖子

如何使用 TypeScript 进行类型化元编程?

我正在创建一个接收多个键和值的函数,并且应该返回一个具有这些键及其各自值的对象。值类型应与我调用该函数时传递的值匹配。

目前,该代码可以运行,但类型不准确。

我尝试使用工厂方式,希望打字稿能为我推断一些东西。

这是工厂的代码。另外,这里还有一个游乐场

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)

typescript typescript-generics

5
推荐指数
1
解决办法
1310
查看次数

标签 统计

typescript ×1

typescript-generics ×1