我正在使用Visual Studio 2015 IDE。JavaScript類的Typescript定義文件引發運行時錯誤
我有一個文件Messaging.d.ts。它定義了用JavaScript編寫的幾個類。在TS文件中的內容將寫入如下:
declare module 'Messaging' {
export default class DisplayMessageManager {
AddMainMessage(message: string, alertCssClass: string): void;
DontShowTipAgain(alertID: string): void;
CloseTip(alertID: string, showAlertTime: number): void;
TogglePanelDirty(panelID: string, isDirty: boolean, originalState: string): void;
}
}
declare module 'MessagingConstants' {
export default class Constants {
//Bootstrap Alert Classes
bsSuccess: string;
bsWarning: string;
bsDanger: string;
bsInfo: string;
bsDefault: string;
bsPrimary: string;
}
}
當我導入此我app.ts文件(在同一個文件夾中)我使用:
import DisplayMessageManager from 'Messaging';
import Constants from 'MessagingConstants';
然後:
messageManager: DisplayMessageManager = new DisplayMessageManager();
messageConstants: Constants = new Constants();
後來我用:
this.messageManager.AddMainMessage('test', this.messageConstants.bsSuccess);
這一切都編譯正確。但是,當我運行代碼時,控制檯中的錯誤告訴我它找不到文件'Messaging.js'。我不認爲打字稿定義文件需要編譯成JavaScript文件。我做錯了什麼讓這些外部JavaScript類工作?
我做了我想做的事情是一種黑客。我聲明瞭變量var gMessageManager = new DisplayMessageManager(); var gConstants = new Constants();在我的JavaScript文件中。然後我使用declare var gMessageManager:any;並聲明var gConstants:any;在我的定義文件中。按照我現在所期望的方式工作,但似乎並非是Typescript定義的目標。 –
是否只有一個'Messaging.d.ts'?沒有'Messaging.js'嗎? –
這是正確的。 js文件命名不同,並且其中包含其他代碼。原始js文件名是否需要與定義文件名相對應?似乎應該只是在全局JavaScript範圍內看到它。 –