访问 TypeScript 中默认无名类中的静态属性
Posted
技术标签:
【中文标题】访问 TypeScript 中默认无名类中的静态属性【英文标题】:Access static property in default nameless class in TypeScript 【发布时间】:2017-01-26 11:59:09 【问题描述】:如果我定义一个这样的类(在一个名为.MyClass.ts 的文件中)
export default class
static someProperty = 1;
someMethod()
var a = ????.someProperty
如何访问 someProperty。
显然,使用this.someProperty
不起作用。也不能使用名称。如果它是一个命名类,它可以通过SomeClassName.someProperty
访问。
如果我将模块加载到另一个文件中。我可以通过以下方式访问它:
MyClass.someProperty
【问题讨论】:
如果它是一个静态属性,那么您也可以在内部访问它......它不起作用吗? How to access static members from instance methods in typescript?的可能重复 @MikeMcCaughan 你是说this.someMethod
吗?还是只是someMethod
?两者都行不通。
@MikeMcCaughan 是的,你会使用它的名字。这里的问题是该类没有名称。
【参考方案1】:
您在这里使用了匿名类表达式。我可能是错的,但我相信命名类表达式是您可以访问该变量的唯一方法。
export default class ClassName
static someProperty = 1;
someMethod()
return ClassName.someProperty;
您的消费者仍然可以随意命名该类(在您之前的示例中为 MyClass)
【讨论】:
【参考方案2】:你可以使用
this.constructor.someProperty
【讨论】:
使用它会导致编译器错误:“类型'Function'上不存在属性'someProperty'” 不幸的是,要以这种方式使用它,您需要强制转换类型,如下所示:const x = (<typeof YourClassName>this.constructor).someStaticProp
以上是关于访问 TypeScript 中默认无名类中的静态属性的主要内容,如果未能解决你的问题,请参考以下文章
Typescript - 从基类中的静态方法实例化子类,使用 args 并引用其他静态方法
为啥我们不能在 TypeScript 类中定义一个 const 字段,为啥静态只读不起作用?