从单个键入接口定义钥匙值对类型



给定一个带有单个键和值的接口:

interface A {
    B : string
}

我希望能够定义键值类型:

interface C {
   "key"   : B,
   "value" : string
}

,但我不想手动执行此操作,我希望能够编写通用类型/接口来进行操作,并基于单个类型的参数进行操作。

例如

interface KeyValueify<T> {
   ...
}

使上面的C等于KeyValueify<A>

...中的魔法将使它起作用?

这是我到目前为止的尝试:

interface KeyValueify<T> {
    key : (keyof T)[0],
    value : T[(keyof T)[0]]
}

但是,它抱怨无法使用字符串索引T。

当我尝试解决这个问题时,它似乎只是在使用任何类型作为值:

interface kv2<T extends {[key :string] : T[(keyof T)[0]]}> {
    key :   keyof T,
    value : T[(keyof T)[0]]
}

值得赞赏的任何想法或解决方法。

删除[0]

interface KeyValueify<T> {
    key: keyof T,
    value: T[keyof T]
}

最新更新