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

React组件迁移Flow:PropTypes.func对应的函数类型写法是什么?

Flow中替代PropTypes.func的写法

嘿,我正好做过PropTypes到Flow的迁移,来给你说清楚怎么写!

在Flow里,对应PropTypes.func的写法分两种场景,取决于你要不要约束函数的参数和返回值:

1. 基础写法(不限制参数/返回值)

如果你只是想标记这个prop是个函数,和PropTypes.func一样不做更严格的约束,可以直接用Function类型:

import * as React from 'react'

type Props = {
  doSomething: Function,
}

class MyComponent extends React.Component<Props> {}

2. 严谨写法(指定参数和返回值)

Flow的优势就是强类型检查,所以更推荐你明确函数的参数类型和返回值类型,这样能提前发现很多潜在问题。举几个常见例子:

  • 无参数、无返回值的函数:
    type Props = {
      doSomething: () => void,
    }
    
  • 接受一个字符串参数、返回布尔值的函数:
    type Props = {
      doSomething: (input: string) => boolean,
    }
    
  • 接受多个参数的函数(比如数字和布尔值,返回字符串):
    type Props = {
      doSomething: (count: number, isEnabled: boolean) => string,
    }
    

总结

如果只是简单替代PropTypes.func,用Function就可以;但为了充分利用Flow的类型检查能力,强烈建议你定义清楚函数的参数和返回值类型,这也是迁移到Flow的核心价值之一~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:12:12