从打字稿中的实例访问静态方法

问题描述 投票:7回答:2

为什么我不能这样做?是由于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());
javascript static typescript
2个回答
4
投票

但是我仍然想知道为什么。

魔法少。静态属性存在于Class实例上。它很清楚地从代码中调用了什么,而不是在运行时魔术绑定到类或成员函数。

是由于Javascript / Typescript的技术限制,还是由Typescript的开发人员设计决定?>

不是技术限制。设计决定。比ES6更符合ES6的标准:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/static但在那之后,它做出了一个减少魔术的决定


0
投票

正如@basarat所说,这只是设计决定,而不是技术限制。

© www.soinside.com 2019 - 2024. All rights reserved.