模式切换
函数
在 TypeScript 中,函数是一种可重用的代码块,它执行特定的任务并可能返回一个值。
语法格式如下所示:
- return_type 是返回值的类型。
- return 关键词后跟着要返回的结果。
- 一般情况下,一个函数只有一个 return 语句。
- 返回值的类型需要与函数定义的返回类型(return_type)一致。
typescript
function function_name(): return_type {
// 语句
return value;
}
TypeScript 支持多种函数类型,包括普通函数、箭头函数、函数类型、默认参数、剩余参数和重载函数。以下是一些关于 TypeScript 函数的基本概念和示例:
普通函数
普通函数是使用 function 关键字定义的。
typescript
function add(a: number, b: number): number {
return a + b;
}
console.log(add(1, 2)); // 输出 3
箭头函数
箭头函数使用 => 语法,并提供了更简洁的函数定义方式。箭头函数没有自己的 this、arguments、super 或 new.target。
typescript
const add = (a: number, b: number): number => a + b;
console.log(add(1, 2)); // 输出 3
函数类型
你可以显式地定义函数的类型。
typescript
type AddFunction = (a: number, b: number) => number;
const add: AddFunction = (a, b) => a + b;
console.log(add(1, 2)); // 输出 3
默认参数
你可以为函数参数提供默认值。
typescript
function greet(name: string = "World") {
return `Hello, ${name}!`;
}
console.log(greet()); // 输出 "Hello, World!"
console.log(greet("TypeScript")); // 输出 "Hello, TypeScript!"
剩余参数
使用剩余参数可以处理不确定数量的参数。
typescript
function sum(...numbers: number[]) {
return numbers.reduce((a, b) => a + b, 0);
}
console.log(sum(1, 2, 3, 4)); // 输出 10
重载函数
函数重载允许你为同一个函数定义多个类型签名。
typescript
function reverse(x: number): number;
function reverse(x: string): string;
function reverse(x: any): any {
if (typeof x === "number") {
return Number(x.toString().split("").reverse().join(""));
} else if (typeof x === "string") {
return x.split("").reverse().join("");
}
}
console.log(reverse(123)); // 输出 "321"
console.log(reverse("hello")); // 输出 "olleh"
函数作为参数传递
在 TypeScript 中,函数可以作为参数传递,可以从其他函数返回,并可以赋值给变量。
typescript
function applyFunc(fn: (a: number, b: number) => number, a: number, b: number) {
return fn(a, b);
}
const multiply = (a: number, b: number) => a * b;
console.log(applyFunc(multiply, 5, 3)); // 输出 15
立即执行函数表达式 (IIFE)
这是一个自调用函数,定义后立即执行。
typescript
(function exampleIIFE() {
console.log("This function will be executed immediately.");
})();