在TypeScript中,为什么我的类型别名返回错误?

在TypeScript中,为什么我的类型别名返回错误?,typescript,Typescript,在Car.ts中,我有以下代码: export class Car { static SMALL: string = "small"; static MEDIUM: string = "medium"; static LARGE: string = "large"; } import { Car } from "./Car"; type CARSIZE = Car.SMALL | Car.MEDIUM | Car.LARGE; 在CarSize.ts中,我有以下

在Car.ts中,我有以下代码:

export class Car {

    static SMALL: string = "small";
    static MEDIUM: string = "medium";
    static LARGE: string = "large";

}
import { Car } from "./Car";

type CARSIZE = Car.SMALL | Car.MEDIUM | Car.LARGE;
在CarSize.ts中,我有以下代码:

export class Car {

    static SMALL: string = "small";
    static MEDIUM: string = "medium";
    static LARGE: string = "large";

}
import { Car } from "./Car";

type CARSIZE = Car.SMALL | Car.MEDIUM | Car.LARGE;
我正在尝试创建一个CARSIZE类型,它只能是
Car.SMALL
Car.MEDIUM
Car.LARGE
中的一种

我收到以下错误:

“Car”仅指类型,但在此处用作命名空间


如何修复此错误?

因为
Car.SMALL
是一个值,而不是一种类型

在本例中,我将使用字符串枚举:

enum CarSize {
  small = "small",
  medium = "medium",
  large = "large"
}
但是如果您真的想让它工作,您可以使用
typeof
来获取值的类型。此外,您还需要将属性定义为
只读
,并删除显式类型标记,以便编译器能够将类型推断为文本:

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;

因为
Car.SMALL
是一个值,而不是一种类型

在本例中,我将使用字符串枚举:

enum CarSize {
  small = "small",
  medium = "medium",
  large = "large"
}
但是如果您真的想让它工作,您可以使用
typeof
来获取值的类型。此外,您还需要将属性定义为
只读
,并删除显式类型标记,以便编译器能够将类型推断为文本:

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;

使用枚举而不是使用枚举