【发布时间】:2018-08-13 19:14:08
【问题描述】:
我正在使用 TypeScript,我需要处理动态对象属性。我希望我能成为 TypeScript 的大师,但我不是。我遇到的问题是,在我当前的项目中,我想让用户可以将自己的自定义接口输入到通用接口中。
我现在工作的是以下界面
export interface Filter {
columnId: string;
searchTerm: string;
}
export interface GridState {
filters: Filter[];
}
// use it as an array of filters
const state: GridState = {
filters: [{ columnId: 'firtName', searchTerm: 'John' }]
}
但是从上面显示的内容来看,我想让用户可以使用他自己的界面。因此,假设他想使用field 而不是columnId,而不是searchTerm,他将使用value。所以他的自定义界面是
export interface CustomFilter {
field: string;
value: string;
}
我想提供给用户的是这样的,一个自定义结构模板
export interface FilterStruct {
propNameColumnId: string;
propNameSearchTerm: string;
}
但是我如何将 2 连接在一起?如何使用用户的CustomFilter 和FilterStruct。以下不起作用,我知道它不正确。
export interface GridState {
filters: FilterStruct<CustomFilter>[];
}
最终目标是用户能够使用自己的界面和自己的属性名称进行输入。然后在我这边,我将使用提供的动态对象属性循环遍历数组。
【问题讨论】:
-
当您说“用户可以输入自己的自定义界面”时,您的意思是在运行时给予他们这种可能性吗?
-
啊抱歉,我的意思是在他们的代码中,因为他们想要创建自己的界面,而不是在运行时。
标签: javascript typescript types interface typescript2.0