2

TypeScript コンパイラによって生成された JS コードに問題があります。このようなクラスの場合:

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

    getFUllName(): string {
        return this.FirstName + ' ' + this.LastName;
    }        
}

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

上記のコードには未使用の (参照されていない) フィールドは含まれていませんが、「オブジェクトからオブジェクトへの」マッピングの場合に必要です。コンパイラにそれらを常に生成させることは可能ですか?

Visual Studio 2012 の TypeScript 0.9.1 を使用しています。コンパイラ オプションは次のとおりです。

<TypeScriptTarget>ES5</TypeScriptTarget>
<TypeScriptIncludeComments>true</TypeScriptIncludeComments>
<TypeScriptSourceMap>true</TypeScriptSourceMap>
<TypeScriptModuleKind>AMD</TypeScriptModuleKind>

ヒントをお寄せいただきありがとうございます。

4

2 に答える 2

5

JavaScript でフィールドを宣言する必要はありません。TypeScript のフィールド宣言は、型チェックのみに使用されます。コンパイル済みコードを使用してフィールドにアクセスすることもできます。

var o = new UserDTO();
o.FirstName = 'John';
o.LastName = 'Doe';
console.log(o.getFUllName()); // "John Doe"

フィドル: http://jsfiddle.net/nPr6f/

于 2013-07-23T08:17:42.900 に答える