假设我有一个函数,它将此对象作为参数之一:
{
section: "main",
sectionColor: "#0072c6",
favIcon: "default",
libraries: {
value: "librariesFiles",
type: "jsIncludes"
},
components: {
value: "comoponentFiles",
type: "jsIncludes"
}
}
这是我在函数中定义此属性的接口:
interface IgenerateFileArgumentObjectItem {
value: string;
type: string;
}
export interface IgenerateFileArgument {
[key: string]: (string | IgenerateFileArgumentObjectItem);
}
很快,我正在尝试使用动态数量的属性来定义对象,这些属性可以与具有两个属性的另一个对象的字符串值相等...
但编译器抱怨,我认为问题在于这一行: (string | IgenerateFileArgumentObjectItem)
是否有任何明显的错误,或者我是否尝试做不可能的事情?
答案 0 :(得分:1)
我创建了以下示例,您可以在TS playground中查看它。我能够重建你的问题。似乎以下librariesFiles,componentFiles,modellingContentStates,sharePointStates中的一个(或全部)是string []类型。
interface IgenerateFileArgumentObjectItem {
value: string;
type: string;
}
export interface IgenerateFileArgument {
[key: string]: (string | IgenerateFileArgumentObjectItem);
}
var p: string = 'uo'
var lol :string[] = ['no', 'po']; // Fix this to string type
var a: IgenerateFileArgument = {
c: {
value: p,
type:'mo'
},
b:'lol',
e: {
value:'yo',
type:'mo'
},
m: { // you can remove this instead
value:lol,
type:'go'
}
}