typescript - 如何根据接口的键创建模板文字类型?
问题描述
我有这两个接口代表我的应用程序中的一些数据结构。
interface Foo {
a: number,
b: number,
c: number,
}
interface Bar {
g: number,
h: number,
j: number,
}
为了能够通过它们的字符串名称识别这些接口(即从文件解析或获取用户输入时),我有以下查找接口:
interface TypeMap {
foo: Foo,
bar: Bar,
}
这使我可以创建实用程序类型,例如:
type Lookup<K extends keyof TypeMap> = TypeMap[K];
type FooType = Lookup<'foo'>; // Foo
type FooPropNames = keyof Lookup<'foo'>; // 'a' | 'b' | 'c'
问题从这里开始。我想为类似 "foo_a"
or "bar_j"
的字符串创建一个类型- 由其中一种类型的小写名称及其道具名称之一组成。
type TypePropString<K extends keyof TypeMap> = `${K}_${keyof Lookup<K>}`;
不幸的是,这不起作用,因为接口可能有用symbol
s 索引的道具,而这些道具显然不能出现在模板字符串中。
有没有其他方法可以做到这一点?
解决方案
推荐阅读
- python - 如何更新在pygame中显示用户输入文本?
- python - 仅针对某些请求的 Django 设置 url 参数
- api - 如何从 facebook 获取其他人或页面视频缩略图?
- xml - xsl 的问题:仅删除不包含特定节点的分支
- reactjs - 映射 redux 状态数组值而不检查其长度
- php - 如何插入一个值并从禁用的文本和几个复选框中获取数据并存储在 laravel 的数据库中?
- python - 从 pyinstaller 执行运行 exe 文件时 jpype 出错
- tensorflow - 加载时间慢 - EfficientDet D2
- python - Jupyther 和 CSV 文件
- python - 为什么 python 屏幕录像机不创建 .avi 文件?