1
我正在用TypeScript和AngularJS 1創建一個應用程序,並且遇到了創建常量並將常量傳遞給其他類的問題。我有以下常數我的應用程序:Typescript:AngularJS 1常量問題
module app{
export class AUTH_EVENTS {
static get Default():any {
return {
LOGIN_SUCCESS: 'AUTH_EVENTS:LOGIN_SUCCESS',
LOGIN_FAILED: 'AUTH_EVENTS:LOGIN_FAILED',
LOGOUT_SUCCESS: 'AUTH_EVENTS:LOGOUT_SUCCESS',
LOGOUT_FAILED: 'AUTH_EVENTS:LOGOUT_FAILED',
SESSION_TIMEOUT: 'AUTH_EVENTS:SESSION_TIMEOUT',
NOT_AUTHORIZED: 'AUTH_EVENTS:NOT_AUTHORIZED'
};
}
}
var app = getModule();
app.constant("AUTH_EVENTS", AUTH_EVENTS.Default())
}
這我嘗試訪問這裏:
module app{
class auth{
constructor(public $q: ng.IQService,
public $state:angular.ui.IState,
public AUTH_EVENTS: AUTH_EVENTS){
}
responseError(response:any) {
if (response.status === 401) {
console.log(this.AUTH_EVENTS.LOGIN_SUCCESS);
}
return this.$q.reject(response);
}
}
}
,我有這個問題,就是在
console.log(this.AUTH_EVENTS.LOGIN_SUCCESS)
的LOGIN_SUCCESS不定義。
你有什麼想法,爲什麼會發生這種情況?定義常量是否存在問題,還是類auth問題?更具體地講,這是當我編譯TS到JS我得到的錯誤:
error TS2339: Property 'LOGIN_SUCCESS' does not exist on type 'AUTH_EVENTS'.
它運作良好。我設法通過刪除靜態Default來修復,並將導出類AUTH_EVENTS中的所有變量設置爲public。你能告訴我是否有任何設置靜態默認設置變量公開的好處嗎? – uksz
我會說,這取決於你的喜好。我更喜歡類的公共成員,因爲它很容易用作類型(那個類)....同樣,public是默認訪問修飾符,如果它的值被忽略... –
謝謝!我也這麼想 :) – uksz