2016-11-17 3 views
1

Я хотел бы условно добавить свойство к объекту (или, может быть, я имею в виду класс - я не уверен в фактической семантике в TypeScript).Условно добавление свойства в TypeScript

import IMetadata from './metadata-interface'; 

export default class MetaData { 

    [idx: string]: IMetadata; 

    public 'foo' = { 
     name: 'foo', 
    } as IMetadata; 

    public 'bar' = { 
     name: 'bar', 
    } as IMetadata; 
}; 

Но как я могу условно добавить бар в объект? Могу ли я сделать что-то вроде:

export default class MetaData { 

    [idx: string]: IMetadata; 

    public 'foo' = { 
     name: 'foo', 
    } as IMetadata; 

    if(condition) { 
     public 'bar' = { 
      name: 'bar', 
     } as IMetadata; 
    } 
}; 
+0

"или, может быть, я имею в виду класс". Какая у вас цель? Класс и объект - это те же понятия, что и в других языках на основе классов. Вы действительно хотите иметь условную логику при построении определения класса? – Alex

+0

«Вы действительно хотите иметь условную логику при построении определения класса?» Да. Я исхожу из JavaScript (я с ним довольно опыт). Я являюсь новичком с TypeScript. – Ben

+0

Я вполне уверен, что это невозможно, но не могли бы вы рассказать о своем прецеденте? Я не совсем уверен, что вы на самом деле ищете что-то вроде директив препроцессора C# здесь. – Alex

ответ

3

Используйте if заявление:

export default class MetaData { 

    [idx: string]: IMetadata; 

    public 'foo' = { 
     name: 'foo', 
    } as IMetadata; 

    public 'bar'?: IMetadata; 

    constructor(condition: boolean) { 
     if (condition) { 
      this.bar = { 
       name: 'bar', 
      }; 
     } 
    } 
} 
Смежные вопросы