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 * ?
答案 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