2016-11-17 50 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', 
      }; 
     } 
    } 
}