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 函数 = 参数类型 + 返回值类型。善用可选参数、剩余参数和函数类型,既能约束调用方,也让回调与高阶函数的写法变得类型安全。

笔记加载中…