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

React+TypeScript环境下如何为函数组件设置Prop类型替换any

解决方案

你已经提前定义了MovieProps接口,直接复用这个类型即可,有三种常用写法可选:

写法1:直接内联声明props类型

直接在参数处定义解构字段的类型,适合props结构非常简单的场景:

function MovieCard({ movie }: { movie: MovieProps }) {
  // 原有组件逻辑不变
}

写法2:单独声明组件Props接口

提前定义组件的入参类型,后续要加props属性的时候修改更方便,也是大部分项目的通用写法:

// 可以和之前的MovieProps定义放在同一个类型文件里
interface MovieCardProps {
  movie: MovieProps
}

function MovieCard({ movie }: MovieCardProps) {
  // 原有组件逻辑不变
}

写法3:配合React.FC泛型使用

如果要严格遵循React函数组件的类型规范,还可以用React内置的FC泛型包裹组件props类型,会自动带上children等React组件默认属性的类型提示:

interface MovieCardProps {
  movie: MovieProps
}

const MovieCard: React.FC<MovieCardProps> = ({ movie }) => {
  return (
    <div className="movie">
      <div className="movie-title">{movie.title}</div>
      <div className="movie-year">{movie.year}</div>
    </div>
  );
};

额外补充:你代码里用movie['title']的访问方式可以改成movie.title的点访问形式,TS会自动给出属性提示,写错属性名的时候也会直接抛出类型错误,更方便调试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:24:01