typescript - 索引对象的打字稿参考值
问题描述
我有一个接收对象参数的函数,定义如下:
interface MyObject {
[key: string]: (SomeTypeA | SomeTypeB)[]
}
对象的签名是从 JSON Schema 动态生成的,并且将来可能包含更多属性,但它可以作为MyObject
值的唯一真实来源。(SomeTypeA | SomeTypeB)[]
当我有参考时,有没有办法让我参考界面的一部分MyObject
?
例如:像这样:
const doSomething = (withObject: valueof MyObject) => {
// withObject is either SomeTypeA or SomeTypeB or whatever the value of properties is inside MyObject
}
解决方案
您可以像这样提取下面的类型:
type SomeTypeA = string;
type SomeTypeB = number;
interface MyObject {
[key: string]: (SomeTypeA | SomeTypeB)[],
}
type ExtractType<T> = T[keyof T];
const c: ExtractType<MyObject> = [50, 'foo'];
推荐阅读
- mysql - 如何在 laravel 中制作像下面这样的连接表
- linux - mailutils mailx 为附件设置“Content-Disposition:附件”
- java - 如何将 Java 可执行文件转换为 APK 以在 Android 上运行?
- c++ - C++:在子类中使用基类
- java - Android Studio - Asynctask get() 冻结 UI
- javascript - 通过 API 加载时如何正确添加加载指示器?
- python - Django/Python TemplateDoesNotExist at /base.html
- mysql - 如果搜索参数为空,如何处理 MYSQL 搜索查询
- reactjs - React Native Animation 字体大小输入不起作用
- r - geom_sf() 等值线颜色未显示