【发布时间】:2018-10-12 22:57:27
【问题描述】:
我有一个函数,它接受一个带有两个键的配置对象。这些值是对象中的键数组。
Config 类型上的 a 值将从 T 类型的对象中删除,但 b 值需要以某种仅对字符串值键有效的方式进行转换.
结果是一个将T类型作为显式参数的函数,并返回一个对T类型的对象进行转换的函数:
interface Config<T extends Object, K extends keyof T> {
a?: K[] // keys to remove from T, this works fine
b?: K[] // keys to modify string value - want to constrain these
}
export function f<T extends Object>(config: Config<T, keyof T>): (row: T) => Partial<T> {
return function (row) {
// remove keys from config.a
// do something stringy with keys from config.b
}
}
它是这样称呼的:
const fn = f<SomeType>({ a: [...], b: [...] })
有什么方法可以将Config 接口中的b 限制为只有字符串值的键?我尝试了所有我能想到的方法,但我尝试的大部分方法都产生了语法错误。我现在正在通过将字符串值强制为字符串来解决这个问题,因为类型系统不知道它们是字符串。有没有更好的方法来做到这一点?
【问题讨论】:
标签: typescript generics