我有一个URL对象。通过按一个按钮来请求URL。我有3个按钮:输入,输出和 StandardReport 。
StandardReport 将打开一个窗口,其中包含3个按钮,分别名为 Define , Validate 和 Refresh 。< / p>
export interface StandardReport {
define: string;
validate: string;
refresh: string;
}
interface GeneratedFilesURL {
inputs: string;
outputs: string;
standardReport: StandardReport;
}
export const GENERATED_FILES_URL: GeneratedFilesURL = {
inputs: '/generated_files/input_consolidation',
outputs: '/generated_files/output_consolidation',
standardReport: {
define: '/generated_files/standard_report_define',
validate: '/generated_files/standard_report_validate',
refresh: '/generated_files/standard_report_refresh',
},
};
export type Source = 'inputs' | 'outputs' | StandardReport;
我使用GENERATED_FILES_URL[source]
访问URL,其中source
可以是输入或输出,我得到Type 'StandardReport' cannot be used as an index type.
并也{ {1}}或GENERATED_FILES_URL.standardReport.define
。
您能帮我提供确切的类型结构吗?
请导航到错误标签以获取错误
答案 0 :(得分:1)
对于您的Source
类型,您实际上想拥有类似export type Source = keyof GeneratedFilesURL
的东西;
并且对于您的界面(因为您要按字符串查找),最简单的方法是从Record
扩展它
interface GeneratedFilesURL extends Record<sting, any> {
....
}
那么您就可以轻松地做自己想做的事
export const myType: Source = 'standardReport';
const bla = GENERATED_FILES_URL[myType].define