如何在TypeScript/JavaScript中定义多个命名属性
在“myItemA”对象的“sorting”属性中,我希望允许定义多个灵活命名的属性,例如“viewOrder”、“execOrder”、“persistOrder”。。。 然后像这样使用:如何在TypeScript/JavaScript中定义多个命名属性,javascript,typescript,Javascript,Typescript,在“myItemA”对象的“sorting”属性中,我希望允许定义多个灵活命名的属性,例如“viewOrder”、“execOrder”、“persistOrder”。。。 然后像这样使用: myItemA.sorting.viewOrder = 3; myItemA.sorting.execOrder = 7; etc. export abstract class ItemA { constructor( public id: string,
myItemA.sorting.viewOrder = 3;
myItemA.sorting.execOrder = 7;
etc.
export abstract class ItemA {
constructor(
public id: string,
public name: string,
// (this is may not be correct - how to correct it ?)
public sorting?: [ {[name: string]: number} ],
...
export const myItemA: ItemA =
{
id: 'A1',
name: 'A1',
// (compiler complains here - how to correct it ?)
sorting: [ {'viewOrder': 0}, {'execOrder': 0}, {etc.} ],
...
}
我正在尝试ItemA的定义和属性排序,如下所示:
myItemA.sorting.viewOrder = 3;
myItemA.sorting.execOrder = 7;
etc.
export abstract class ItemA {
constructor(
public id: string,
public name: string,
// (this is may not be correct - how to correct it ?)
public sorting?: [ {[name: string]: number} ],
...
export const myItemA: ItemA =
{
id: 'A1',
name: 'A1',
// (compiler complains here - how to correct it ?)
sorting: [ {'viewOrder': 0}, {'execOrder': 0}, {etc.} ],
...
}
然后创建如下对象:
myItemA.sorting.viewOrder = 3;
myItemA.sorting.execOrder = 7;
etc.
export abstract class ItemA {
constructor(
public id: string,
public name: string,
// (this is may not be correct - how to correct it ?)
public sorting?: [ {[name: string]: number} ],
...
export const myItemA: ItemA =
{
id: 'A1',
name: 'A1',
// (compiler complains here - how to correct it ?)
sorting: [ {'viewOrder': 0}, {'execOrder': 0}, {etc.} ],
...
}
构造函数中的语法应如下所示:
公共排序?:{[name:string]:number}
或:
公共排序?:记录
声明变量时如下所示:
export const myItemA:ItemA={
...
排序:{'viewOrder':0,'execOrder':0},
};
您可以尝试{[name:string]:number;}[]
或数组
。为什么不干脆公共排序?:{[name:string]:number;}
?这基本上可以像您的第一个示例一样,将一对多属性添加到排序中<代码>排序:{viewOrder:0,execOrder:0,…}
是的,为什么我要用[]使它复杂化?。谢谢。