是否正在逐步优化领域?

时间:2017-07-08 16:33:28

标签: typescript knockout.js webpack

我试图让一个基本的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

1 个答案:

答案 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;
}());