在打字稿中,为什么我的类型混叠返回错误

  • 本文关键字:类型 错误 返回 typescript
  • 更新时间 :
  • 英文 :


在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.SMALLCar.MEDIUMCAR.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;

相关内容

最新更新