相关疑难解决方法(0)

打字稿 - 逐步扩展对象的类型

我正在尝试使用 TS 实现以下目标:

let m: Extendable
m.add('one', 1)
// m now has '.one' field
m.add('two', 2)
// 'm' now has '.one' and '.two' fields
Run Code Online (Sandbox Code Playgroud)

我熟悉通过以下方式在 TS 中返回扩展类型:

function extend<T, V>(obj: T, val: V): T & {extra: V} {
    return {
        ...obj,
        extra: val
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,在我的情况下有两个问题:

1) 对象madd()被调用后需要更新其类型以反映新字段的添加

2)新字段的名称被参数化(并不总是extra例如)

第一个问题可能会通过使用类定义并以某种方式使用TypeThis实用程序来重新调整类型来解决,但我无法找到足够的关于如何使用它的文档。

欢迎任何帮助或指导。谢谢!

typescript typescript-generics

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

标签 统计

typescript ×1

typescript-generics ×1