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");
}
我很难弄清楚如何混合使用 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");
}