javascript类的typescript定义文件会引发运行时错误

时间:2016-02-04 19:27:33

标签: javascript typescript

我正在使用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类工作,我做错了什么?

1 个答案:

答案 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;
}