将类型断言与解构赋值结合使用的最佳方式是什么?
What's the best way to use a type assertion with destructuring assignment?
我有一些使用 destructuring assignment 的代码如下:
const { values: project, setValues, submitForm } = useFormikContext();
根据 TypeScript type assertion documentation 我想使用 as
关键字来告诉 TS 编译器 project
将始终是类型 Project
.
正确的语法是什么?我试过:
const { values: (project as Project), setValues, submitForm } = useFormikContext();
但这是无效的。
您可以使用以下语法来解决这个问题:
const { values: project, setValues, submitForm }: { values: Project; setValues: SomeType1, submitForm: SomeType2} = useFormikContext();
您也可以创建另一个变量:
const { values: project, setValues, submitForm } = useFormikContext();
const a: Project = project;
来自 looking at the implementation the definition uses TypeScript Generics
export function useFormikContext<Values>() {
const formik = React.useContext<FormikContextType<Values>>(FormikContext);
return formik;
}
它会创建一个 react context,如果您将钩子调用为:
useFormikContext<Project>()
可能不仅值是Project
类型,而且setValues
也只接受Project
类型的对象(不幸的是没用过图书馆)
我有一些使用 destructuring assignment 的代码如下:
const { values: project, setValues, submitForm } = useFormikContext();
根据 TypeScript type assertion documentation 我想使用 as
关键字来告诉 TS 编译器 project
将始终是类型 Project
.
正确的语法是什么?我试过:
const { values: (project as Project), setValues, submitForm } = useFormikContext();
但这是无效的。
您可以使用以下语法来解决这个问题:
const { values: project, setValues, submitForm }: { values: Project; setValues: SomeType1, submitForm: SomeType2} = useFormikContext();
您也可以创建另一个变量:
const { values: project, setValues, submitForm } = useFormikContext();
const a: Project = project;
来自 looking at the implementation the definition uses TypeScript Generics
export function useFormikContext<Values>() {
const formik = React.useContext<FormikContextType<Values>>(FormikContext);
return formik;
}
它会创建一个 react context,如果您将钩子调用为:
useFormikContext<Project>()
可能不仅值是Project
类型,而且setValues
也只接受Project
类型的对象(不幸的是没用过图书馆)