我需要这样的类型:
type A<Map extends object, Keys extends Extract<keyof Map, string>> = {
[NewKey in `prefix-${Keys}`]: Map[Keys/*!!!problem here!!!*/]
}
我不知道如何处理注释所在的代码。Keys
不使用 拆分联合类型NewKey
,它始终是keyof Map
!
这是A类实际工作:
type B = A<{ a: 1, b: 2 }, "a" | "b">
/*
type B => {
"prefix-a": 1 | 2,
"prefix-b": 1 | 2
}
*/
但我想要一个“C 型”:
// type C = ...
type D = C<{ a: 1, b: 2 }, "a" | "b">
/*
type D => {
"prefix-a": 1,
"prefix-b": 2
}
*/
您可以像这样使用键重映射:
type C<Map extends object, Keys extends Extract<keyof Map, string>> = {
[Key in Keys as `prefix-${Key}`]: Map[Key]
}
type D = C<{ a: 1, b: 2 }, "a" | "b">
//type D = {
// "prefix-a": 1;
// "prefix-b": 2;
//}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句