迹忆客 专注技术分享

当前位置:主页 > 学无止境 > WEB前端 >

枚举类型在 Next.js 项目中不起作用解决方式

作者:迹忆客 最近更新:2023/01/08 浏览次数:

在 Next.js 项目中出现过 "Type 'string' is not assignable to type '"left" | "right"'." 的错误。

在 Next.js 上运行的项目,下面是类型定义

export interface TwoColumnsBlueWhite {
  title: String;
  subTitle: String;
  content: JSX.Element;
  links: string[];
  imageSide: 'left' | 'right'
}

下面是我的 map 数组。

const data = [
{ title: 'some'
  ...
  imageSide: 'left'
 },
{ title: 'some'
  ...
  imageSide: 'right'
 },
];

<Carousel />
      {data.map((data) => (
        <TwoColumnsBlueWhite
          title={data.title}
          subTitle={data.subTitle}
          content={data.content}
          links={data.links}
          imageSide={data.imageSide}
        />
      ))}

如果我们改变对 imageSide 的定义:'left'| 'right' | string。其实是可以正常工作的,但是我们想使用严格(strict)模式。

'left' 和 'right' 不是 imageSide 中的类型或枚举类型:'left' | 'right'。因此,一种解决方案可能是首先定义枚举类型,如下所示,

export enum ISide {
   LEFT = 'left',
   RIGHT = 'right'
}

然后,在需要时使用它,

export interface TwoColumnsBlueWhite {
  title: String;
  subTitle: String;
  content: JSX.Element;
  links: string[];
  imageSide: ISide.LEFT | ISide.RIGHT           // <--- 导入ISide 并且在这里使用
}

并且修改如下代码

const data = [
{ title: 'some'
  ...
  imageSide: ISide.LEFT
 },
{ title: 'some'
  ...
  imageSide: ISide.RIGHT
 },
];

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便