const nav: typechecking = useNavigation() 和 const nav = useNavigation<typechecking>() 有什么区别?

问题描述 投票:0回答:1

所以我最近从 React Native 中的 Javascript 切换到 Typescript,在检查

useNavigation
钩子时遇到了一个问题。

const nav: typechecking = useNavigation()

const nav = useNavigation<typechecking>()

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

但是,正确的解释是什么?

就像,我能想到的是,因为

useNavigation()
钩子可以有多种返回类型,所以我们在第二个钩子中将他的返回类型限制为
typechecking

在第一个中,我们从
useNavigation()
钩子接收所有类型,但仅检查
typechecking
的导航。

typescript react-native react-native-navigation
1个回答
0
投票

TLDR 没有区别。


以下是显式类型注释。您告诉编译器

nav
有一个指定的类型
typechecking
(您通常希望用大写字母编写类型)。

const nav: typechecking = useNavigation()

它没有显式类型注释,并且

nav
的类型由编译器根据
useNavigation<typechecking>()
的返回类型自动推断。相反,您将通用参数传递给函数,该参数(可能基于函数声明)会影响其返回类型。

const nav = useNavigation<typechecking>()

我们可以通过查看声明来确认这个假设(Github 上的源代码)。您会看到该函数返回通用参数

T

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

如上所述,现在

nav
的类型将根据
useNavigation()
的返回类型(即您作为泛型参数传递的任何类型)自动推断。

© www.soinside.com 2019 - 2024. All rights reserved.