首先,我是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
是否可以在内部使用类的静态成员 接口?
这是正确的方法吗?
我该如何解决?
答案 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;
}
这是答案:打字稿发生在之前任何变量都被分配了任何值。因此,打字稿不能检查变量的值。另一方面,由于打字稿发生在为变量赋值之前,因此可以使用打字稿来缩小可能分配给变量的值。
类型优先。
最后:发布有关堆栈溢出的问题时,如果发布真实代码,您将获得更有用的答案。提出的这个问题似乎只是关于何时编译时间的误解。如果您发布的是您正在使用的真实代码,那么也许有人可以提出其他解决问题的方法,并帮助您找到更令人满意的答案。