reactjs - 显式键入解构函数参数
问题描述
我目前有:
const Start = ({ onSubmit }) => {
但这是在 TypeScript 环境中定义 React 组件的开始。我收到一个红色波浪形警告说 onSubmit 是隐式的任何类型。我希望它是完全输入的。所以我把它定义为:
const Start = ({ onSubmit: (event: BaseSyntheticEvent<object, any, any> | undefined) => Promise }) => {
现在我收到一条警告,指出存在 eslint 解析错误,指示 ';' 预料之中。如何键入解构函数?
解决方案
您需要创建一个类型来分配Start
,例如:
type StartFunction = (args: {
onSubmit: (
event: BaseSyntheticEvent<object, any, any> | undefined
) => Promise<void>;
}) => void;
const Start: StartFunction = ({ onSubmit }) => {
// ...
};
话虽如此,如果你在 React 中创建一个功能组件,你可以简单地利用它们已经存在的FC
类型,其中包括一个用于指定 props 的泛型,然后你可以对其进行解构:
import React, { FC } from 'react';
type StartProps = {
onSubmit: (
event: BaseSyntheticEvent<object, any, any> | undefined
) => Promise<void>;
};
const Start: FC<StartProps> = ({ onSubmit }) => {
return <></>;
};
推荐阅读
- scala - 如果它与正则表达式完全匹配,如何将数据框中的列值替换为空字符串?
- pervasive - Pervasive SQL 重用已删除的主键
- java - 使用 Web3j 的 Quorum 客户端发送公共事务
- angularjs - AngularJS 的自定义属性指令
- javascript - 传单,重现/调用拖动事件
- ios - 线程 1:signal SIGABRT --builds 成功但应用程序在模拟器中崩溃
- angular - --routing-scope 在 Angular CLI 中代表什么
- vba - 在用户窗体内的 msgbox 上选择 yes 时运行子程序
- html - 突出显示的列表项,但不是整行
- javascript - 使用 babel-eslint 导致 false no-empty 错误