为什么我不能这样做?是由于Javascript / Typescript的技术限制,还是TypeScript开发人员的设计决定?同样的代码在Java或C#中也可以正常工作。
class Test {
static str: string = "test";
public static getTest(): string {
return this.str;
}
}
//works as expected
console.log(Test.getTest());
//won't compile
var test: Test = new Test();
console.log(test.getTest());
但是我仍然想知道为什么。
魔法少。静态属性存在于Class
实例上。它很清楚地从代码中调用了什么,而不是在运行时魔术绑定到类或成员函数。
是由于Javascript / Typescript的技术限制,还是由Typescript的开发人员设计决定?>
不是技术限制。设计决定。比ES6更符合ES6的标准:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/static但在那之后,它做出了一个减少魔术的决定
正如@basarat所说,这只是设计决定,而不是技术限制。