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

React+TypeScript中如何将Rating组件的onClick属性设为可选?

问题:React TypeScript组件中如何将onClick设为可选属性

我用TypeScript编写了一个简单的React评分组件,代码如下:

Rating.js

export type RatingType = {
  rating: number,
  onClick: (x: number) => void
  style?: React.CSSProperties,
  prod?: any
}

const Rating: React.FC <RatingType> = ({ rating, onClick, style }) => {
  return (
    <>
      //do something here
    </>
  );
};

export default Rating;

我希望在另一个组件中不传入onClick函数来使用这个评分组件,代码如下:

import Rating from "./Rating";
function Demo() {
  return (
    //logic goes here
    <Rating rating={item.ratings}  />
  )
}

export default Demo

但运行时报错:

Property 'onClick' is missing in type '{ rating: any; }' but required in type 'RatingType'.

请问如何在定义RatingType类型时将onClick函数设为可选?


解决方案

只需要在RatingType中给onClick属性添加?标记,将其声明为可选属性即可:

export type RatingType = {
  rating: number,
  onClick?: (x: number) => void, // 添加?标记将属性设为可选
  style?: React.CSSProperties,
  prod?: any
}

修改后,使用<Rating rating={item.ratings} />时就不会再触发类型错误。另外,建议在组件内部调用onClick时使用可选链语法,避免因onClick未传入导致运行时错误:

// 组件内部调用示例
const handleStarClick = (x: number) => {
  onClick?.(x); // 可选链调用,onClick不存在时不会执行
};

内容的提问来源于stack exchange,提问作者The Dead Man

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 09:03:19