Typescript 什么';将类型断言与分解赋值一起使用的最佳方法是什么?
我有一些代码使用如下:Typescript 什么';将类型断言与分解赋值一起使用的最佳方法是什么?,typescript,formik,destructuring,type-assertion,object-destructuring,Typescript,Formik,Destructuring,Type Assertion,Object Destructuring,我有一些代码使用如下: const { values: project, setValues, submitForm } = useFormikContext(); 根据,我想使用as关键字告诉TS编译器project将始终是project类型 这个的正确语法是什么?我试过: const { values: (project as Project), setValues, submitForm } = useFormikContext(); 但这是无效的。您可以使用以下语法来处理此问题: c
const { values: project, setValues, submitForm } = useFormikContext();
根据,我想使用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;
按定义使用
导出函数useformiccontext(){
const formik=React.useContext(FormikContext);
返回蚁群;
}
它会创建一个钩子,如果将钩子称为:
useFormikContext<Project>()
useformiccontext()
可能不仅值的类型是
Project
,而且setValues
将只接受Project
类型的对象(遗憾的是没有使用库)通过查看,我认为您应该使用useformiccontext()
而不是代替Thank@Teneff。这正是我想要的-当我在VScode中悬停在project
上时,我可以看到project
的类型是project
。你能补充一下这一点作为答案,并进一步解释一下为什么会这样吗?是不是
将
变成了一个(类似变量的东西)来声明值的类型?我们添加了一个简单的例子:谢谢!我更喜欢第一个例子,因为它没有额外的变量。是的,我也喜欢它。我没有检查你的库中是否有打字机。但是我认为这个例子对于其他开发者来说更常见。你是对的-如果他们写了一个答案,我会把这个标记为已接受但向上投票@Teneff。谢谢!我也会投票的。谢谢!这是我使用的答案,但我标记了另一个答案被接受,因为其他人可能正在使用不使用泛型的库。
useFormikContext<Project>()