我正在使用带有TypeScript 1.0和web essentials 3.7的visual studio 2012。我在TypeScript文件中的类中声明了一些私有静态变量。但是当我保存这个文件时,我没有在JavaScript文件和运行时系统中看到这些成员抛出异常。
立即
早期系统用于生成这些属性。但最近我升级到TypeScript 1.0&现在我没有看到这些私有静态成员。
早些时候:
答案 0 :(得分:2)
它不需要在编译的JavaScript中明确提及它们,因为它是一种动态语言,允许在首次使用属性时添加属性,例如当您设置值时...
因为属性是静态的,所以您应该通过类名访问它。在下面的示例中,User._name
。
class User {
private static _name: string;
static setName(name: string) {
User._name = name;
}
static getName() {
return User._name;
}
}
User.setName('Steve');
alert(User.getName()); // 'Steve'
正如我所提到的,没有必要设置"事实上会有_name
属性,因为JavaScript并不需要这样做。以下是上例中的输出:
var User = (function () {
function User() {
}
User.setName = function (name) {
User._name = name; // this adds a property if it doesn't exist
};
User.getName = function () {
return User._name;
};
return User;
})();
User.setName('Steve');
alert(User.getName());
如果您希望它出现,您需要在开始时指定一个值:
private static _name = '';
答案 1 :(得分:-1)
如果您正确访问它,则不应抛出任何异常。未定义的成员,如
class A {
private STATIC: string;
}
的值为undefined
,与正常的Javascript:
var something; // undefined
之前将其初始化为""
的打字稿实际上是"不正确" (与类似语言相比)。它肯定只是打字稿猜测。如果你想保留这个,你需要做
class A {
private STATIC: string = "";
}