打字稿不会生成未引用的成员

krl*_*rlm 2 javascript knockout-mapping-plugin typescript

TypeScript 编译器生成的 JS 代码有问题。对于这样的类:

// Class
export class UserDTO {
    Id: number;
    FirstName: string;
    LastName: string;
    DateOfBirth: Date;

    getFUllName(): string {
        return this.FirstName + ' ' + this.LastName;
    }        
}
Run Code Online (Sandbox Code Playgroud)

TypeScript 生成以下代码:

define(["require", "exports"], function(require, exports) {
    // Class
    var UserDTO = (function () {
        function UserDTO() {
        }
        UserDTO.prototype.getFUllName = function () {
            return this.FirstName + ' ' + this.LastName;
        };
        return UserDTO;
    })();
    exports.UserDTO = UserDTO;
});
//@ sourceMappingURL=TestClass.js.map
Run Code Online (Sandbox Code Playgroud)

上面的代码不包含未使用(未引用)的字段,但我在某些“对象到对象”映射案例中需要它们。是否可以强制编译器始终生成它们?

我使用的是 Visual Studio 2012 的 TypeScript 0.9.1。这是我的编译器选项:

<TypeScriptTarget>ES5</TypeScriptTarget>
<TypeScriptIncludeComments>true</TypeScriptIncludeComments>
<TypeScriptSourceMap>true</TypeScriptSourceMap>
<TypeScriptModuleKind>AMD</TypeScriptModuleKind>
Run Code Online (Sandbox Code Playgroud)

提前感谢您的任何提示。

Mic*_*ics 5

您不需要在 JavaScript 中声明字段。TypeScript 的字段声明仅用于类型检查。您仍然可以使用已编译的代码访问您的字段。

var o = new UserDTO();
o.FirstName = 'John';
o.LastName = 'Doe';
console.log(o.getFUllName()); // "John Doe"
Run Code Online (Sandbox Code Playgroud)

小提琴:http : //jsfiddle.net/nPr6f/