因此,我最近在Reaction Native中切换到来自Java脚本的TypeScrip,在输入判断useNavigation钩子时遇到了一个问题.

const nav: typechecking = useNavigation()

const nav = useNavigation<typechecking>()

它们都适用于我的代码,但我在想它们之间的区别?

但是,对此的正确解释是什么呢?

Like, what i could think was that because useNavigation() hook could have many return types, we have restricted he return type to typechecking in the 2nd one.
While in the 1st one, we are receiving all the types from useNavigation() hook but are checking nav for typechecking only.

推荐答案

TLDR没有什么不同.


下面是一张explicit type annotation.您告诉编译器nav有一个指定的类型typechecking(您通常希望用大写来编写类型).

const nav: typechecking = useNavigation()

这没有显式的类型注释,nav的类型由编译器根据useNavigation<typechecking>()的返回类型自动推断.相反,您将一个泛型参数传递给函数,该参数可能会影响它的返回类型,具体取决于函数声明.

const nav = useNavigation<typechecking>()

我们可以通过看一看宣言(source code on Github)来证实这一假设.您将看到该函数返回泛型参数T.

export function useNavigation<
  T = NavigationProp<ReactNavigation.RootParamList>
>(): T {
  // implementation
}

如上所述,现在将根据您作为泛型参数传递的useNavigation()的返回类型自动推断nav的类型.

Typescript相关问答推荐

类型脚本:类型是通用的,只能索引以供阅读.(2862)"

为什么ESLint抱怨通用对象类型?

我用相同的Redux—Toolkit查询同时呈现两个不同的组件,但使用不同的参数

动态调用类型化函数

扩展函数签名中的参数类型,而不使用泛型

如何使默认导出与CommonJS兼容

以Angular 自定义快捷菜单

TypeScrip泛型类未提供预期的类型错误

如何以Angular 导入其他组件S配置文件

在VSCode中显示eslint错误,但在终端中运行eslint命令时不显示?(Vite,React,TypeScript)

在组件卸载时try 使用useEffect清除状态时发生冲突.react +打字

我怎样才能正确地输入这个函数,使它在没有提供正确的参数时出错

如何将通用接口的键正确设置为接口的键

如何正确地将元组表格输入到对象数组实用函数(如ZIP)中,避免在TypeScrip 5.2.2中合并所有值

如何静态键入返回数组1到n的函数

JSX.Element';不可分配给类型';ReactNode';React功能HOC

React中的效果挂钩在依赖项更新后不会重新执行

我是否应该在 Next.js 中的服务器组件中获取秘密数据的所有函数中使用使用服务器?

为什么我无法在 TypeScript 中重新分配函数?

如何从 Select 元素中删除选项