首页 > 解决方案 > 将类型断言与解构赋值一起使用的最佳方法是什么?

问题描述

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

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

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

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

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

但这是无效的。

标签: typescriptformikdestructuringtype-assertionobject-destructuring

解决方案


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

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

  return formik;
}

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

useFormikContext<Project>()

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


推荐阅读