2016-11-13 17 views
3

私はVS 2015 Update 3では下記のAというラベルが付いていますが、下記のBというラベルが付いています。問題は、ソースにはフィールドがあるが、出力にはフィールドがないことです。助けてください。もちろんTypeScriptコンパイラで出力が正しく生成されない

A.

"use strict"; 
export class RoleViewModel { 
    public Id: number; 
    public Name: string; 
    public Description: string; 
    public IsEnabled: boolean; 
    public ResourceCustomizationId: number; 
} 

B.

"use strict"; 
export class RoleViewModel { 
} 
//# sourceMappingURL=role.js.map 

答えて

2

Javascriptはフィールド宣言について知らず、TypeScriptはクラスに割り当てられていないか、またはどのメソッドでも参照されているフィールドをすべて削除します。

あなたが持っている問題を回避するには、このようなこれらのフィールドにデフォルト値を設定することです:

export class RoleViewModel { 
    public Id: number = 0; 
    public Name: string = ""; 
    public Description: string = ""; 
    public IsEnabled: boolean = false; 
    public ResourceCustomizationId: number = 0; 
} 

そしてそれは、次のコードを生成します:

export class RoleViewModel { 
    constructor() { 
     this.Id = 0; 
     this.Name = ""; 
     this.Description = ""; 
     this.IsEnabled = false; 
     this.ResourceCustomizationId = 0; 
    } 
} 
1

、それが正常に動作します。 TypeScriptがJavaScriptにコンパイルされると、JavaScriptはフィールド宣言を使用しないため、すべてのフィールド宣言を削除します。定義のみが保持されます。

一般的に、この動作ではあまり気にしないでください。 JavaやC#のように、あなたのコードをTypeScriptで書いてください。ほとんどの場合、問題は発生しません。

関連する問題