Как ввести строку как ключ свойства объекта в интерфейсе объектов машинописного текста? - PullRequest
0 голосов
/ 03 мая 2019

Я определяю интерфейс - соответствующая часть здесь:

      actors:{    
        name:{           // options (Object) is specific to each actor type
                        // see documentation at top of each actor
          factory:string,
          url:string,
          options:Object
        }
        //...
      }

Я реализую интерфейс следующим образом:

      actors:{
        'unitcube':{ 
          factory:'Unitcube',
          url:'../src/app/models/stage/actors/objects/unitcube',
          options:{wireframe:false, 
                color:'red', 
                opacity:0.9, 
                transform:{t:[0.0,2.0,-3.0001],e:[0.0,1.0,0.0],s:[1.0,3.0,1.0]}
          } 
        }
        //...
      }//actors

Интерфейс передает tslint, однако я получаю сообщение об ошибке tslint / tsc о том, что типы интерфейса и реализации различны - в частности, 'unitcube' и name.

Как я могу напечатать список строковых объектов? (т.е. как мне определить «имя» в актерской части интерфейса?)

Спасибо.

1 Ответ

0 голосов
/ 03 мая 2019
interface IActors {
   actors: IActorType
}

interface IActorType {
  [name: string]: //so on and so forth
}

интерфейс, определенный в вопросе, заставляет ключ быть буквально «name».когда реализовано с 'unitcube' или любым другим именем актера, оно оценивается как не равное 'name.'[name: string] позволяет этому ключу быть динамическим, поэтому можно использовать любое имя актера типа string.

...