next.js 类型错误:“属性在类型上不存在”,而实际上它确实存在

e4yzc0pl  于 2023-08-04  发布在  其他
关注(0)|答案(1)|浏览(132)

我在构建过程(Vercel)中遇到了一个错误,product被传递到CartItem.tsx中,尽管它是在types.tsx中声明的。
错误:

Type error: Property 'imageUrl' does not exist on type 'Product'.
  43 |       <div className="flex items-center">
  44 |         <Image
> 45 |           src={product.imageUrl}
     |                        ^
  46 |           alt={product.itemName}
  47 |           width={100}
  48 |           height={100}

字符串

CartItem.tsx:

import { Product } from "types/types";
import Image from "next/image";

export default function CartItem({ product }: { product: Product }) {
/* ... */

  return (
      <div className="flex items-center">
        <Image
          src={product.imageUrl}
          alt={product.itemName}
          width={100}
          height={100}
          className="h-10 w-10 rounded-full mr-4 object-cover"
        />
       {* ... *}
      </div>
  );
}

types.tsx:

/* ... */
export type Product = {
  id: number;
  restaurantId: number;
  itemName: string;
  restaurantName: string;
  imageUrl: string;
  // title: string;
  description: string;
  price: number;
  // discountPercentage: number;
  // rating: number;
  // stock: number;
  // brand: string;
  // category: string;
  // thumbnail: string;
  // images: string[];
  quantity?: number;
};

wlp8pajw

wlp8pajw1#

根据你写的代码,它应该可以工作。我会尝试暂时将您的类型定义移动到与CartItem相同的文件中,看看是否解决了问题-如果解决了,那么您的类型导入方式一定有问题。
还有一个侧记:你可以使用React.FC类型来更干净地类型化组件。

type CartItemTwoProps = { product: Product };

const CartItemTwo: React.FC<CartItemTwoProps> = ({ product }) => {
    return (
      product.imageUrl // works
  );
}

字符串
TSPlayground

相关问题