打字稿中的函数调用

时间:2019-08-08 03:07:43

标签: typescript

即使从未调用过的函数也可能导致类型错误。这是什么意思?

我正在学习有关typeScript的课程,现在我陷入了一个我不理解的简单问题。

function add1(n: number): number {
  return n + true
}

3 个答案:

答案 0 :(得分:3)

打字稿编译器在运行之前会“编译”您的代码(将其转换为Javascript)。在编译期间,它会检查您的代码中是否有任何错误。

在您的代码中n是一个数字,而true是一个boolean,您不能将布尔值和数字加在一起。结果,编译器告诉您这是错误的。


编辑以在评论中回答OP的问题

本课程向您展示了一个代码无法使用的示例。它不起作用,因为它并不意味着起作用。代码中的每个变量都有一个类型。例如,“ n”的类型为“数字”,“ true”的类型为“布尔”。这些类型在运算符“ +”中不兼容,这就是所谓的类型错误:)是否必须将代码放入终端?因为除非您执行Kevin的建议或将'true'替换为数字,否则该代码无济于事。

答案 1 :(得分:1)

很简单,您不能在数字和布尔值“ return n + true”之间使用运算符“ +”,这是错误的,您可以将其用于类似类型和其他情况,但不能用于那种情况。

edit:是的,即使函数未称为强类型语言的“好东西”,它们也可能导致类型错误,它们在编译之前可能会导致错误,因此易于调试,因为它们不会让您遇到类型错误

答案 2 :(得分:0)

实际上,恐怕您不清楚类型声明。

让我为您详细说明,希望对您有所帮助。

所以,您的功能就是这个。

function add1(n: number): number {
  return n + true
}

现在,您在这里使用的参数是 n ,而 n的类型是数字。因此,您期望任何想要使用此功能的人传递一个数字,并添加一个“ true”。

这没有意义,为什么要在布尔值中加上数字。

现在由您声明的第二种类型。即add1(n:number):数字

这意味着该函数将返回的都是数字类型。

看到您的return语句,就是说它将用布尔值添加一个数字。因此,在编译代码时,打字稿显示即使从未调用过的函数,也可能导致类型错误