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
    提供了构造函数的类型)

  • 您需要在键
    “TYPE”
    处为属性添加括号符号。无论出于何种原因,TypeScript都没有
    作为类型运算符(可能会与某些名称空间符号冲突?)。所以它是
    (typeof A)['TYPE']
    ,而不是
    (typeof A).TYPE

对于
typeof(A.TYPE)
符号:

  • 如上所述,有一个名为
    a
    的值,它是
    a
    类实例的构造函数。该值有一个名为
    TYPE
    的属性。因此有一个名为
    a.TYPE
    的值。此值的类型可以查询为
    typeof(A.type)
    。这可能是你想做的最简单的符号

好吧,希望这会有帮助;祝你好运

使用
A['TYPE']
(A)。@jcalz
TS2339:类型“A”上不存在属性“TYPE”
Whoops没有注意到它是
静态的。你想要
(typeof A)['TYPE']
你知道为什么(typeof A).TYPE不起作用吗?@Tobiq因为
不是有效的类型运算符。
class A {
    public static readonly TYPE = "A";
}

interface forA {
    for: A.TYPE
}