2016-09-18 114 views
1

如果我这样定义一个类(在一个名为文件。MyClass.ts)访问静态属性在打字稿

export default class { 
    static someProperty = 1; 

    someMethod() { 
     var a = ????.someProperty 
    } 

} 

如何访问someProperty。 显然,使用this.someProperty不起作用。名字也不能使用。如果它是一个命名的类,它可以通过SomeClassName.someProperty访问。

如果我将模块加载到另一个文件中。我可以通过以下方式访问它:

MyClass.someProperty 
+0

如果它是一个静态属性,这就是你怎么会在内部进行访问以及...它不工作? –

+0

[如何访问打字机实例方法中的静态成员?](http://stackoverflow.com/questions/29244119/how-to-access-static-members-from-instance-methods-in-typescript) – 2016-09-19 03:20:01

+0

@MikeMcCaughan你的意思是'this.someMethod'?或者只是'someMethod'?两者都不会起作用。 – 2016-09-19 03:23:55

回答

2

您在此处使用的是匿名类表达式。我可能是错的,但我相信命名类表达式是您访问该变量的唯一方法。

export default class ClassName { 
    static someProperty = 1; 

    someMethod() { 
     return ClassName.someProperty; 
    } 

} 

你的消费者依然可以命名该类任何他们想要的(在你前面的示例MyClass的)

0

您可以使用

this.constructor.someProperty 
+0

使用这个给出了一个编译器错误:“属性'someProperty'在类型'Function'上不存在'” – CodeTower

+0

不幸的是,你需要像这样使用它:'const x =( this.constructor ).someStaticProp' – Pavel