我正在使用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范围内看到它。 –