在car.ts中,我有以下代码:
export class Car {
static SMALL: string = "small";
static MEDIUM: string = "medium";
static LARGE: string = "large";
}
在carsize.ts中,我有以下代码:
import { Car } from "./Car";
type CARSIZE = Car.SMALL | Car.MEDIUM | Car.LARGE;
我正在尝试创建一个只能是Car.SMALL
,Car.MEDIUM
或CAR.LARGE
的Carsize类型。
我收到以下错误:
'car'仅是指某种类型,但在这里被用作名称空间。
如何解决此错误?
,因为 Car.SMALL
是一个值,而不是类型。
在这种情况下,我会使用字符串枚举:
enum CarSize {
small = "small",
medium = "medium",
large = "large"
}
但是,如果您真的想实现此功能,则可以使用typeof
来获取值的类型。另外,您需要将属性定义为readonly
并删除显式类型符号,因此编译器将能够推断为文字:
class Car {
static readonly SMALL = "small";
static readonly MEDIUM = "medium";
static readonly LARGE = "large";
}
type CARSIZE = typeof Car.SMALL | typeof Car.MEDIUM | typeof Car.LARGE;