TypeScript编译器产生不正确的输出

时间:2016-11-13 17:46:56

标签: typescript

我在VS 2015 Update 3中有以下标记为A的以下打字稿代码,但它会在下面生成标记为B的代码。问题是源有字段但输出没有。请帮忙。

一个。

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

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

2 个答案:

答案 0 :(得分:2)

Javascript不了解字段声明,TypeScript将删除未在您的类中分配或由任何方法引用的所有字段。

您的解决方法是将默认值设置为以下字段:

#include "stdio.h"

int main(void) {
// Disable stdout buffering
setvbuf(stdout, NULL, _IONBF, 0);

char a[100], ch, *counter;
int c = 0, i;

counter = a[0];
printf("please enter a sentance:");


while ((ch = getchar()) != '\n'){
    printf("yo");
    *counter = ch;     //problem is here
    counter = a[c];
    c = c + 1;
}
printf("hi\n");

for(i = c-1; i >= 0; i--){
    printf("%c", a[i]);
}

return 0;
}

它将生成以下代码:

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

答案 1 :(得分:1)

当然,它的行为正确。当TypeScript被编译成JavaScript时,它会删除所有字段声明,因为JavaScript根本不使用它们。只保留定义。

一般来说,你不应该因为这种行为而烦恼太多。只需像在Java或C#中一样用TypeScript编写代码,在大多数情况下,您不会遇到任何麻烦。