Appearance
函数
函数是在 JavaScript 中传递数据的主要方式。TypeScript 允许您指定函数的输入和输出值的类型。
参数类型注释
- 声明函数时,可以在每个参数后添加类型注解,以声明函数接受的参数类型。参数类型注释位于参数名称之后:
typescript
// 参数类型定义
function greet(name: string) {
console.log("Hello, " + name.toUpperCase() + "!!");
}
当参数具有类型注释时,将检查该函数的参数:
typescript
// 如果执行,将是一个运行时错误!
greet(42);
即使您的参数上没有类型注释,TypeScript 仍会检查您是否传递了正确数量的参数。
- 返回类型注释 你还可以添加返回类型注释。返回类型注释出现在参数列表之后:
typescript
function getFavoriteNumber(): number {
return 26;
}
与变量类型注释非常相似,通常不需要返回类型注释,因为 TypeScript 会根据其 return 语句推断函数的返回类型。上面例子中的类型注释不会改变任何东西。某些代码库会出于文档目的明确指定返回类型,以防止意外更改或仅出于个人偏好。
- 匿名函数 匿名函数与函数声明有点不同。当一个函数出现在 TypeScript 可以确定它将如何被调用的地方时,该函数的参数会自动指定类型。 下面是一个例子:
typescript
// 这里没有类型注释,但是TypeScript可以发现错误
const names = ["Alice", "Bob", "Eve"];
// 函数上下文类型
names.forEach(function (s) {
console.log(s.toUppercase());
});
// 上下文类型也适用于箭头函数
names.forEach((s) => {
console.log(s.toUppercase());
})
即使参数 s 没有类型注释,TypeScript 也会使用 forEach 函数的类型,以及数组的推断类型来确定 s 的类型。
这个过程称为上下文类型,因为函数发生在其中的上下文通知它应该具有什么类型。
与推理规则类似,你不需要明确了解这是如何发生的,但了解它的机制确实可以帮助你注意何时不需要类型注释。稍后,我们将看到更多关于值出现的上下文如何影响其类型的示例。