我正在使用Visual Studio 2015 IDE。
我有一个文件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类工作,我做错了什么?
答案 0 :(得分:0)
由于您使用的是非相对路径(即"Messaging"
而不是"./Messaging"
),如果您使用的是CommonJS,这意味着您应该拥有node_modules/Messaging/
和{{1 }}
我不确定这实际上是不是你想要的。您可能要做的是创建以下两个声明文件以反映本地node_modules/MessagingConstants/
文件的确切形状
.js
:
Messaging.d.ts
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;
}
:
MessagingConstants.d.ts
然后将它们包括在内:
export default class Constants {
//Bootstrap Alert Classes
bsSuccess: string;
bsWarning: string;
bsDanger: string;
bsInfo: string;
bsDefault: string;
bsPrimary: string;
}