Javascript 从接口声明中访问静态属性
如您所见,我正试图从Javascript 从接口声明中访问静态属性,javascript,typescript,types,Javascript,Typescript,Types,如您所见,我正试图从forA访问A.TYPE,以便我可以执行一种类型保护 但是,我得到了一个错误:TS2702:“A”仅指一个类型,但在这里用作名称空间 有解决方法吗?您要找的类型是(typeof a)['type']或typeof(a.type) 对于(typeof A)['TYPE']符号: 静态属性是类构造函数的属性,因此需要使用typeof A而不是A。(构造函数是一个名为a的值,它与类型a不同。因此typeofa提供了构造函数的类型) 您需要在键“TYPE”处为属性添加括号符号。无论
forA
访问A.TYPE
,以便我可以执行一种类型保护
但是,我得到了一个错误:TS2702:“A”仅指一个类型,但在这里用作名称空间
有解决方法吗?您要找的类型是
(typeof a)['type']
或typeof(a.type)
对于(typeof A)['TYPE']
符号:
- 静态属性是类构造函数的属性,因此需要使用
而不是typeof A
。(构造函数是一个名为A
的值,它与类型a
不同。因此a
提供了构造函数的类型)typeofa
- 您需要在键
处为属性添加括号符号。无论出于何种原因,TypeScript都没有“TYPE”
作为类型运算符(可能会与某些名称空间符号冲突?)。所以它是
,而不是(typeof A)['TYPE']
(typeof A).TYPE
typeof(A.TYPE)
符号:
- 如上所述,有一个名为
的值,它是a
类实例的构造函数。该值有一个名为a
的属性。因此有一个名为TYPE
的值。此值的类型可以查询为a.TYPE
。这可能是你想做的最简单的符号typeof(A.type)
好吧,希望这会有帮助;祝你好运 使用
A['TYPE']
(A)。@jcalzTS2339:类型“A”上不存在属性“TYPE”
Whoops没有注意到它是静态的。你想要(typeof A)['TYPE']
你知道为什么(typeof A).TYPE不起作用吗?@Tobiq因为
不是有效的类型运算符。
class A {
public static readonly TYPE = "A";
}
interface forA {
for: A.TYPE
}