Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在TypeScript/JavaScript中定义多个命名属性_Javascript_Typescript - Fatal编程技术网

如何在TypeScript/JavaScript中定义多个命名属性

如何在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”、“execOrder”、“persistOrder”。。。 然后像这样使用:

   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,…}
是的,为什么我要用[]使它复杂化?。谢谢。