我试图让一个基本的Knockout模型在TypeScript中运行,但我认为当我通过webpack进行转换时,它会优化掉#34;未使用的"变量
import * as ko from "knockout";
export class ViewModel {
public firstName: "James";
}
ko.applyBindings(new ViewModel());
但ViewModel的编译版本是
var ViewModel = (function () {\r\n function ViewModel() {\r\n }
所以我在绑定时遇到错误
<p data-bind="text: firstName"></p>
Uncaught ReferenceError: Unable to process binding "text: function (){return firstName }"
Message: firstName is not defined
答案 0 :(得分:1)
export class ViewModel {
public firstName: "James";
}
冒号表示类型注释,因此您说firstName
字段将具有类型"James"
(字符串文字类型)。与TypeScript中的所有类型一样,这会在编译时被擦除。
我认为您要做的是为firstName
字段设置初始值,因此您应该使用=
代替:
export class ViewModel {
public firstName = "James";
}
或者使用类型:
export class ViewModel {
public firstName : string = "James";
}
两者都编译为预期的输出:
var ViewModel = (function () {
function ViewModel() {
this.firstName = "James";
}
return ViewModel;
}());