【发布时间】:2016-01-06 22:35:57
【问题描述】:
我编译的打字稿在运行时遇到问题。我的链是 Typescript -> es6 模块 -> webpack + babelify。
有问题的文件是
import Registry from "../registry";
class Alert {
public static name = "alert";
public static options = {
template: require("./alert.mustache")
};
}
Registry.register(Alert);
这是通过 es2015 插件 + webpack 编译到
"use strict";
var _registry = __webpack_require__(14);
var _registry2 = _interopRequireDefault(_registry);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var Alert = function Alert() {
_classCallCheck(this, Alert);
};
Alert.name = "alert";
Alert.options = {
template: __webpack_require__(16)
};
_registry2.default.register(Alert);
//# sourceMappingURL=alert.js.map
/*****************
** WEBPACK FOOTER
** alert.js
** module id = 15
** module chunks = 0
**/
但是在执行时,得到这个错误:
alert.js:15 Uncaught TypeError: Cannot assign to read only property 'name' of function Alert() {
_classCallCheck(this, Alert);
}
我尝试了很多不同的方法,但我不明白为什么在类上使用静态属性会导致这个问题。
提前致谢。
【问题讨论】:
-
这是一个打字稿编译器问题:在 ES2015 中,
name函数属性是只读的。所以 TS 编译器必须考虑到这一点。 -
哇,非常感谢。你帮我省了很多麻烦。
-
如果您提交错误,请提供链接吗?
标签: typescript webpack babeljs