我有这个:
type Two = {
one: number,
two: string,
three: boolean
}
我希望它能创建一个类似于这样的类型:
type RenamedTwo = {
one: number,
two: string,
four: boolean // difference
}
尝试以这种方式创建:
type Rename<T, K extends keyof T, N> = Pick<T, Exclude<keyof T, K>> & { [N]: T[K] }
为了尝试使用这种方式:
type Renamed = Rename<Two, 'three', 'four'>
但是TSlint标记[N]
为错误,并给出以下错误消息:
[ts]类型文字中的计算属性名称必须引用其类型为文字类型或“唯一符号”类型的表达式。 [ts] 'N'只是一个类型的引用,但在此处被用作值。
type Rename<T, K extends keyof T, N extends string> = Pick<T, Exclude<keyof T, K>> & Record<N, valueof<Pick<T, K>>>
- Eduard