将名称重映射为字符串元组

时间:2019-05-29 21:27:25

标签: typescript tuples

function factory<T extends string[]>(...fields: T) {
   type V=  * map T to V *
   return {
     get(field: key of T): string,
     add(...v: V): void,
   }
}

const obj=factory('field1', 'field2')
obj.add('value1', 'value2')

我想要V = [string,string],因为我想添加仅接受两个参数。

如何写 *将T映射到V *

1 个答案:

答案 0 :(得分:0)

您可以只使用常规映射类型:

function factory<T extends string[]>(...fields: T) {
    type V = { [P in keyof T]: string }
    return {
        add(...v: V): void {

        }
    }
}

const obj = factory('field1', 'field2')
obj.add('value1', 'value2')
obj.add('value1', 'value2', "D") // err