React Typescript:导出包含枚举的类型

React Typescript: Exporting types containing enums

我有以下文件:

CarBrands.ts:

export enum CarBrands {
  SAAB = "saab",
  VOLVO = "volvo"
}

CarBrand.ts:

import {CarBrands} from "./CarBrands";

export type CarBrand = CarBrands.SAAB | CarBrands.VOLVO;

Car.ts:

import {CarBrand} from "./CarBrand";

export default interface Car {
  brand: CarBrand;
}

默认Car.ts:

import Car from "./Car";

export const DefaultCar: Car = {
  brand: "volvo"
};

在我导出“DefaultCar”的最后一个文件中,出现以下错误:TS2322: Type '"volvo"' is not assignable to type 'CarBrands' 尽管“brand”的类型应该是“CarBrand”而不是“CarBrands”。这是为什么?

我也试过export type CarBrand = typeof CarBrands.SAAB | typeof CarBrands.VOLVO;,但这也没用。

我可能遗漏了一些明显的东西,但谷歌搜索对我一点帮助都没有。我做错了什么?

除非您的枚举中有更多条目并且您不希望CarBrand中使用它们,为什么不直接使用枚举?

此外,即使枚举是基于字符串的,您也不能在没有强制转换的情况下将字符串分配给 属性。相反,使用 CarBrands.VOLVO

import {CarBrands} from "./CarBrands";

export default interface Car {
  brand: CarBrands;
}
import Car from "./Car";

export const DefaultCar: Car = {
  brand: CarBrands.VOLVO
};

Simplified TypeScript Playground

如果您愿意,也可以只使用这样的字符串:

export type CarBrand = 'saab' | 'volvo';

在这种情况下,您对 'volvo' 的 属性 赋值会起作用,因为它是一个匹配字符串。