gpt4 book ai didi

javascript - 从接口(interface)声明中访问静态属性

转载 作者:搜寻专家 更新时间:2023-10-30 21:26:06 24 4
gpt4 key购买 nike

class A {
public static readonly TYPE = "A";
}

interface forA {
for: A.TYPE
}

如您所见,我正在尝试从 forA 访问 A.TYPE,这样我就可以进行某种形式的类型保护。

但是,我收到错误:TS2702:'A' 仅指一个类型,但在这里用作命名空间

有解决办法吗?

最佳答案

您要查找的类型是 (typeof A)['TYPE']typeof (A.TYPE)

对于 (typeof A)['TYPE'] 表示法:

  • 静态属性是类构造函数的属性,因此您需要使用typeof A 而不是A。 (构造函数是一个名为 Avalue,它与类型 A 不同,despite the same name 。所以 typeof A 给你构造函数的类型)

  • look up 需要括号符号键 "TYPE" 处的属性。无论出于何种原因,TypeScript 都没有 . 作为类型运算符(也许它会与某些命名空间符号冲突?)。所以它是 (typeof A)['TYPE'] 而不是 (typeof A).TYPE

对于 typeof (A.TYPE) 表示法:

  • 如上所述,有一个名为A 的值,它是A 类实例的构造函数。该值有一个名为 TYPE 的属性。所以有一个名为 A.TYPE 的值。这个值的类型可以查询为typeof (A.TYPE)。对于您要尝试执行的操作,这可能是最简单的表示法。

好的,希望对你有帮助;祝你好运!

关于javascript - 从接口(interface)声明中访问静态属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54975643/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com