You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Enum限制Interface中字符串变量可选值?报错求助

问题解决

报错原因

  • 枚举类型的变量/属性必须赋值为枚举成员,不能直接使用字符串字面量——TypeScript会将枚举成员与其对应字符串视为不同类型
  • singleType变量声明后未被使用,触发TypeScript未使用变量警告

修正后的代码

export enum BookType {
  LANGUAGES = "LANGUAGES",
  SCIENCE = "SCIENCE",
  FICTION = "FICTION",
}

// 要么删除未使用的singleType,要么通过使用它消除警告
const singleType: BookType = BookType.SCIENCE;
console.log(singleType);

export interface UserBooks {
  name: string;
  type: BookType;
}

const fullBook: UserBooks = {
  name: 'Some string',
  type: BookType.SCIENCE // 使用枚举成员赋值
};

替代方案(支持直接用字符串赋值)

如果希望直接用字符串字面量也能匹配限定类型,可以改用字符串字面量联合类型,写法更简洁:

type BookType = "LANGUAGES" | "SCIENCE" | "FICTION";

const singleType: BookType = 'SCIENCE'; // 直接赋值字符串无报错

export interface UserBooks {
  name: string;
  type: BookType;
}

const fullBook: UserBooks = {
  name: 'Some string',
  type: 'SCIENCE'
};

内容的提问来源于stack exchange,提问作者LuisEnMarroquin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 15:15:36