如何从界面访问静态类成员

时间:2018-06-21 17:28:08

标签: typescript

首先,我是TypeScript的新手,这个问题对您来说可能很简单:/。

我有一辆汽车class,该汽车的静态成员变量为数字,名为 NUMBER_OF_WHEELS。我有一个名为interface的{​​{1}},它具有CarProps属性,可以是数字或wheels

NUMBER_OF_WHEELS

但是当我尝试从interface CarProps { wheels: number[] | Car.NUMBER_OF_WHEELS } class Car { public static readonly NUMBER_OF_WHEELS = 4; } 访问NUMBER_OF_WHEELS时。我正在

CarProps

  • 是否可以在内部使用类的静态成员 接口?

  • 这是正确的方法吗?

  • 我该如何解决?

enter image description here

1 个答案:

答案 0 :(得分:2)

欢迎使用打字稿!

Typescript在javascript上方提供注释,以描述程序中数据的类型。它在任何代码运行之前在编译步骤中进行工作。无法“访问”类的静态属性并将其用作类型的原因是,静态属性(甚至是非常只读的属性)仍然是类的运行时值的一部分。

您需要的是一种类型!试试这个:

type NUMBER_OF_WHEELS = 4 // this is a type, the type is '4'

interface CarProps {
    wheels: number[] | NUMBER_OF_WHEELS
}

class Car {
    // the type of this variable is '4' so it can ONLY be assigned the value 4
    public static readonly NUMBER_OF_WHEELS: NUMBER_OF_WHEELS = 4;
}

这是答案:打字稿发生在之前任何变量都被分配了任何值。因此,打字稿不能检查变量的值。另一方面,由于打字稿发生在为变量赋值之前,因此可以使用打字稿来缩小可能分配给变量的值。

类型优先。


最后:发布有关堆栈溢出的问题时,如果发布真实代码,您将获得更有用的答案。提出的这个问题似乎只是关于何时编译时间的误解。如果您发布的是您正在使用的真实代码,那么也许有人可以提出其他解决问题的方法,并帮助您找到更令人满意的答案。