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

React+TypeScript中为FC定义空接口的意义何在?

空接口 vs 直接用{}的区别

在React 18.1.0的TypeScript项目里,这两种写法在类型校验层面几乎等价,但声明空接口主要是为了这几个实用目的:

  • 预留扩展空间:现在组件不需要接收props,但后续需求变更大概率要加。用命名空接口的话,之后只需要在接口里新增属性(比如interface MyInterface { name: string }),组件的泛型声明FC<MyInterface>完全不用改;要是用FC<{}>,以后加props就得把泛型改成FC<新的props类型>,修改步骤更多。
  • 提升代码可读性:给空接口起个语义化的名字(比如UserCardProps),哪怕现在是空的,其他开发者一眼就能知道这是对应组件的props类型定义,比光秃秃的{}直观得多,能快速理解代码意图。
  • 方便类型复用:如果其他地方需要引用这个组件的props类型(比如父组件里定义要传给它的参数、或者工具函数处理props),直接用接口名就行;要是用{},每次都得重复写,以后类型变更时还要逐个修改所有用到{}的地方,维护成本更高。

如果确定这个组件永远不会加props,直接用FC<{}>甚至省略泛型(因为FC默认的泛型就是{})也没问题,但实际开发中组件需求大概率会变,提前用命名空接口是更稳妥的做法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 09:20:28