我在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
答案 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编写代码,在大多数情况下,您不会遇到任何麻烦。