javascript - 结果作为对象,其中键是数组中的每个值
问题描述
我试图弄清楚如何定义primaryKey
它是一个对象的结果,并且每个键都是数组中的一个值$primaryKey
。但是我不确定如何做到这一点。我不认为我可以keyof this.$primaryKey
像我尝试的那样使用并得到一个错误。如何(如果可能)做到这一点?
export type PrimaryKey = { [key: keyof Model.$primaryKey]: DBCell }
export abstract class Model extends DB {
public $primaryKey: string[] = ['a', 'b']
public get primaryKey(): PrimaryKey {
return { a: 123, b: 456 }
}
}
解决方案
我设法通过PrimaryKey
以下更改进行了定义:
public $primaryKey = ['a', 'b'] as const;
as const
导致的类型$primaryKey
被推断为['a', 'b']
(文字字符串类型的元组)而不是普通的string[]
.
然后,您可以将其转换为'a' | 'b'
使用索引类型:
Model["$primaryKey"][number]
第一组括号提取元组类型,第二组将其转换为其值的并集。
从那里使用Record
实用程序类型创建一个对象是微不足道的:
export type PrimaryKey = Record<Model["$primaryKey"][number], DBCell>
推荐阅读
- python - 如何计算 Django 模型对象的大小?
- sonarqube - 将 Sonarqube 从一台计算机移动到另一台计算机
- javascript - JavaScript:打破字符串以转换为 CSV
- c++ - 在指向包含 std::string 的对象的指针上调用析构函数的指针无效
- terraform - Terraform - 迭代嵌套地图
- docker - 更新 docker 镜像的最佳方法
- flutter - 如何将 dio 的响应数据分配给飞镖对象?
- python-3.x - 从 Build Pipeline 运行 python 测试时出错 - TypeError: __init__() got an unexpected keyword argument 'client_options'
- java - Maven - 子 pom 覆盖父级的插件属性
- python - 使用Python在html中的某些文本之后找到最近的表格的方法