将映射类型与模板文字类型一起使用时如何使用原始映射键?

就试一试吧

我需要这样的类型:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将 Entity Framework Core 与 Cosmos Db 一起使用时映射无键类型

在将typedelmapper与类型映射一起使用时,如何解决不兼容的类型(不可转换)

TypeScript:将映射类型与泛型一起使用

指针如何与Java中的原始类型一起使用?

减少将原始类型与泛型一起使用时减少潜在的垃圾浪费吗?

将filter_map与易错的映射功能一起使用时,如何汇总错误的迭代器?

如何使模板类型推导与引用一起使用?

用于将“扁平化”对象的键递归地重新映射到嵌套对象中的类型(使用模板文字)

在将泛型引用类型与泛型类型一起使用时收到警告

将一种类型映射到另一种类型以与自己的算法一起使用

在TypeScript中将泛型与映射的条件类型一起使用

在将simple_form与reform一起使用时使用了错误的类型

将v模型与键为数字的数组映射一起使用

重新映射顶部的数字键以将符号和数字与Shift键一起使用

不兼容的通用类型:将.class与通用类型一起使用时,无法指定子类型

将模板类型与不带尖括号的默认类型一起使用

将 TPH 与实体框架一起使用时,如何使我的 OData 仅公开特定类型?

如何防止将类型用作映射键?

“找不到类型的属性” ...将QueryDslPredicateExecutor与MongoDB和Spring-Data一起使用时

将撇号与 materialize 一起使用时出现类型错误

将 Tkinter 与 SQLite 一起使用时收到错误消息,“可能不受支持的类型”。

无法散列的类型:将modin与熊猫一起使用时的系列?

将Typescript与React-Redux一起使用时出现类型错误

将unordered_map与Catch2谓词一起使用时类型不匹配

当我将 IterativeImputer 与 KNeighborsClassifier 一起使用时出现错误“未知标签类型:‘连续’”

将整数模板参数值映射到原始类型

如何正确使用映射类型

将JQuery悬停与HTML图像映射一起使用

将Streams与原始数据类型和相应的包装一起使用