2016-11-08 40 views
0

是否有可能將枚舉類型作爲參數傳遞給裝飾器函數?Typescript:枚舉類型作爲裝飾器參數

export class A { 
    @AsEnum(SomeEnum) 
    name: string; 
} 

export enum SomeEnum { A, B, C} 

export function AsEnum(type): any { 
    return (target, propert) => { 
     return { 
      get: function(): Object { 
       return type; // type is undefined 
      }, 
     } 
    }; 
} 

這裏的類型總是未定義的。

回答

0

問題是您的代碼的順序。
如果你會做:

console.log("the enum: ", SomeEnum); 
export enum SomeEnum { A, B, C} 

您將獲得:

枚舉:未定義

你需要放置的SomeEnum聲明調用時使用它之前,裝飾者:

function AsEnum(type): any { 
    return (target, propert) => { 
     return { 
      get: function(): Object { 
       return type; // type is undefined 
      }, 
     } 
    }; 
} 

enum SomeEnum { A, B, C} 

class A { 
    @AsEnum(SomeEnum) 
    name: string; 
} 

當您嘗試將它用於裝飾器時,解釋器尚未評估枚舉。

+0

很多thx,這有助於 –