Typescript 为什么箭头函数名必须为const/let?

Typescript 为什么箭头函数名必须为const/let?,typescript,react-native,tsx,Typescript,React Native,Tsx,我有一个带有react native的tsx文件。如果函数未设置为const或let,则我的函数名在下面加下划线: 找不到名称“goBack” 但如果我设置const或let,它会起作用: const goBack = () => { // do stuff } 为什么?这与箭头函数无关。您正在尝试为尚未在任何地方声明的标识符赋值 这: 将箭头函数分配给已声明的标识符goBack。(或者,如果这是在类中,它将创建一个新属性并为其分配箭头函数-但我们知道您不是在类中执行此操作,因为

我有一个带有react native的tsx文件。如果函数未设置为const或let,则我的函数名在下面加下划线:

找不到名称“goBack”

但如果我设置const或let,它会起作用:

const goBack = () => {
    // do stuff
}

为什么?

这与箭头函数无关。您正在尝试为尚未在任何地方声明的标识符赋值

这:

将箭头函数分配给已声明的标识符
goBack
。(或者,如果这是在
类中,它将创建一个新属性并为其分配箭头函数-但我们知道您不是在类中执行此操作,因为如果是这样,您的
const
版本将失败。)

就像:

answer = 42;
如果未声明
answer
,则TypeScript会出错

这:

创建一个局部变量(好的,常量)并为其指定箭头函数,如下所示:

const answer = 42;


记住箭头函数没有声明语法是很有用的。箭头函数始终是一个表达式。示例中
=
左侧的部分不是表达式的一部分(尽管有些意外,它可以)。

这取决于它在“tsx文件”中的定义位置。它是在类内部(因此是该类的属性),还是在类定义外部?前者是允许的,而后者是不允许的。不知何故,你的问题似乎不太可能与……有关,当然,是有道理的。您是否在某处定义了名为
goBack
的环境变量?这就是您试图为其赋值的内容。如果不是,您需要一个本地的,您可以使用let/var/const来实现。这不仅仅是一个箭头函数,如果你做了一个简单的字符串赋值,它也会有这个错误!谢谢那有什么更好呢?函数goBack()或const goBack=()=>{}@Cracky-两者都可以,具体取决于各种情况。您是否需要它来关闭此
?使用箭头功能。是否需要将其完全提升?使用传统的
函数
声明。是否要通过在代码中搜索
函数goBack
来查找它?使用传统功能。您是否要使用
新的
?使用
函数
。如果您不关心
这个
或提升,并且不打算使用
新的
,那么使用箭头函数还是传统函数是风格问题。
answer = 42;
const goBack = () => {
    // do stuff
}
const answer = 42;