TypeScript 函数
函数是封装一段可复用逻辑的代码块。TypeScript 在 JavaScript 函数的基础上增加了类型注解:参数和返回值都可以声明类型,调用时传错参数会立即得到编译错误,让函数像带着"说明书"一样清晰可靠。
1. 函数声明与类型注解
参数用 参数名: 类型 声明,返回值类型写在参数括号之后:
function greet(name: string): string {
return "你好," + name;
}
console.log(greet("小明")); // 输出:你好,小明
2. 可选参数与默认参数
可选参数在类型前加 ?,调用时可省略;默认参数直接用 = 给出初值。注意必选参数要排在可选参数之前:
function sayHello(name: string, age?: number, city = "北京"): string {
return `${name} ${age ?? "未知"}岁,来自${city}`;
}
console.log(sayHello("小红", 20)); // 输出:小红 20岁,来自北京
console.log(sayHello("小刚", 18, "上海")); // 输出:小刚 18岁,来自上海
3. 剩余参数
用 ...nums 收集多余的实参成一个数组,适合个数不定的入参:
function sum(...nums: number[]): number {
return nums.reduce((acc, n) => acc + n, 0);
}
console.log(sum(1, 2, 3, 4)); // 输出:10
4. 函数类型
函数本身也有类型:由参数列表与返回值共同描述。可以把函数赋给变量,或作为参数传递形成回调:
type Calc = (a: number, b: number) => number;
const add: Calc = (a, b) => a + b;
const mul: Calc = (a, b) => a * b;
function run(fn: Calc, x: number, y: number): number {
return fn(x, y);
}
console.log(run(add, 2, 3)); // 输出:5
console.log(run(mul, 2, 3)); // 输出:6
5. void 与 never
没有返回值的函数用 void;永远不会正常返回(如抛出异常)的函数用 never:
function log(msg: string): void {
console.log(msg);
}
function fail(msg: string): never {
throw new Error(msg);
}
log("开始"); // 输出:开始
小结
TypeScript 函数 = 参数类型 + 返回值类型。善用可选参数、剩余参数和函数类型,既能约束调用方,也让回调与高阶函数的写法变得类型安全。