RequireJS 和 TypeScript Class - 无法从外部调用函数

RequireJS and TypeScript Class - Cannot call function externally

我很难弄清楚如何混合使用 RequireJs 和 TypeScript。我正在使用 AMD 选项编译 TypeScript。问题是,在导出的 class 中声明的函数被 class 化为 "prototype"。这正常吗?

ModalHelper.ts:

export class ModalHelper {
    saySomething = (something: String) => {
        alert(something);
    }
}

已编译ModalHelper.js:

define(["require", "exports"], function (require, exports) {
    var ModalHelper = (function () {
        function ModalHelper() {
            this.saySomething = function (something) {
                alert(something);
            };
        }
        return ModalHelper;
    })();
    exports.ModalHelper = ModalHelper;
});

Create.ts和Create.js(模块被标记为必需):

require(["jquery", "Shared/ModalHelper"], function ($, modal) {
    $(function () {
        modal.ModalHelper.saySomething("hi");
    });
});

为什么我无法调用此函数?通过调试,我看到模块是通过 RequireJs 添加的。

有两种选择。

您像调用静态方法一样调用它,因此您可以将其设为静态:

export class ModalHelper {
    static saySomething = (something: String) => {
        alert(something);
    }
}

或者,如果您不想让它成为静态的,您可以先实例化 ModalHelper

var helper = new ModalHelper();
helper.saySomething("hi");

IMO 类 仅当您需要多个实例且每个实例都关联数据时才应使用 TypeScript。 Helper 通常只是一堆静态方法。因此我建议改用模块(未经测试):

Shared/ModalHelper.ts

module ModalHelper {
    export function saySomething(something: String) {
        alert(something);
    }
}

export = ModalHelper

Create.ts

import ModalHelper = require("./Shared/ModalHelper");

module Create {
    ModalHelper.saySomething("Hello");
}