JavaScript 类的打字稿定义文件引发运行时错误

Typescript definition file for javascript class throws runtime error

本文关键字:文件 运行时错误 定义 JavaScript      更新时间:2023-09-26

我正在使用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);

这一切都可以正确编译。 但是,当我运行代码时,控制台中的错误告诉我它找不到文件"消息传递.js"。 我不认为打字稿定义文件需要编译成javascript文件。 我做错了什么才能让这些外部JavaScript类工作?

由于您使用的是非相对路径(即 "Messaging"而不是"./Messaging"),如果你使用的是 CommonJS,这意味着你应该有一个node_modules/Messaging/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;
}

然后像这样包含它们:

import DisplayMessageManager  from './Messaging';
import Constants from './MessagingConstants';