如何修改Props适配MyCustomType中多参数的setCounterActive?
适配MyCustomType变更的Props修改方案
首先得说,你之前的Props里setCounterActive的类型是错的——MyCustomType里它是个函数,但你写成了boolean类型,现在要跟着MyCustomType的更新同步调整。
两种正确的修改方式
方式一:复用已有类型(推荐)
直接从MyCustomType里提取setCounterActive的类型,避免重复定义,后续维护更省心:
import type { MyCustomType } from 'shared/types/custom-type.js' type Props = { ...BaseProps, +setCounterActive: MyCustomType['setCounterActive'], }
方式二:显式定义函数类型
要是想直接把类型逻辑写清楚,就和MyCustomType里的定义保持完全一致:
import type { MyCustomType } from 'shared/types/custom-type.js' type Props = { ...BaseProps, +setCounterActive: (loggedIn: boolean, userName: string) => void, }
调用时的要求
修改完类型后,调用setCounterActive的时候必须传入两个参数:第一个是布尔值(对应loggedIn),第二个是字符串(对应userName),顺序不能搞反,比如:
// 正常调用示例 props.setCounterActive(true, 'Alice'); // 未登录场景允许传空字符串的情况 props.setCounterActive(false, '');
另外提一句,你代码里的+是Flow的只读属性语法,要是纯TypeScript项目,建议换成readonly;如果是同时兼容Flow和TS的场景,保留+没问题。
内容的提问来源于stack exchange,提问作者nalabof679
相关产品推荐
相关产品推荐

