打字稿函数:参数后的“:”类型是什么意思以及为什么有些函数没有它?

Typescript functions : What does the ":" type" after parameters mean & why some functions don't have it?

问题

简而言之:

(在题目中)

附实例:

我可以看到很多用 Typescript 编写函数的不同方法,例如:

例 1

function buildName(firstName: string, lastName: string) {
  return firstName + " " + lastName;
}

还有,

Ex2

function buildName(firstName: string, lastName: string): string  {
  return firstName + " " + lastName;
}

我真的不明白为什么如果“function(params):”后面的是一个类型,为什么它不总是存在。例如,在 Java 或 C++ 中,一个函数总是告诉它 returns 是什么类型的东西。当函数 returns 什么都没有时,这在这些语言中仍然表示为 void.

答案

简而言之:

  • ":" - 在函数参数之后,引入函数 returned 的类型。
  • 不是一直都在吗? - Typescrict 可以推断函数 return 编辑的内容的类型。

同前面的例子:

Typescript 的“:type”在函数参数之后通过函数 告诉 return 是什么类型,就像在 Java 或 C++ 中一样.但是,默认情况下使用 Typescript infers the return type of the function,因此并不总是需要在代码中显式编写它。

Ex1中由strings组成的函数buildNamereturnsfirstName + " " + lastName。因此编译器知道函数 return 是一个 string.

Ex2 中,函数 buildName 在它的参数后有 : string。这意味着程序员明确地告诉函数 return 是一个 string。这可能很有帮助,因为编译器将检查函数编辑的 return 是否真的是 string。如果不是,它会抛出一个错误,告诉程序员他犯了一个错误,因为函数没有按预期运行。

这里有一些我用来学习 Typescript 函数的好资源:

Typescript Handbook: functions - typescript 的官方手册。

Typing functions in TypeScript | 2ality - 关于打字稿功能的详尽指南,篇幅较长但相当完整。

注意:Whosebug 上也有类似的问题,但与我搜索的内容不符。我决定自己做。