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