2

我有一些使用解构赋值的代码,如下所示:

const { values: project, setValues, submitForm } = useFormikContext();

根据TypeScript 类型断言文档,我想使用as关键字来告诉 TS 编译器project始终是 type Project

什么是正确的语法?我试过了:

const { values: (project as Project), setValues, submitForm } = useFormikContext();

但这是无效的。

4

2 回答 2

2

通过查看实现,定义使用TypeScript 泛型

export function useFormikContext<Values>() {
  const formik = React.useContext<FormikContextType<Values>>(FormikContext);

  return formik;
}

它会创建一个反应上下文,如果您将钩子称为:

useFormikContext<Project>()

可能不仅值是 type Project,而且setValues只接受 object 类型Project(不幸的是没有使用该库)

于 2021-05-19T13:39:03.513 回答
1

您可以使用以下语法来解决此问题:

const { values: project, setValues, submitForm }: { values: Project; setValues: SomeType1, submitForm: SomeType2} = useFormikContext();

您也可以创建另一个变量:

const { values: project, setValues, submitForm } = useFormikContext();
const a: Project = project;
于 2021-05-19T12:28:05.753 回答