函数与泛型

TypeScript 教程 · 第 5 章 · 6 次浏览

TS 的函数要写参数类型和返回类型。泛型(generic)让函数支持"不同类型",但保持类型关联。

函数类型

(a: number, b: number) => number 表示函数类型;可选参数加 ?;默认参数直接赋值。

泛型

function identity<T>(value: T): T { return value; },调用时 T 自动推断。泛型适合:数组第一个元素、Promise 包装、API 返回类型。

泛型约束

<T extends HasLength> 限制 T 必须有 length 属性。

代码示例

// 函数类型
type AddFn = (a: number, b: number) => number;
const add: AddFn = (a, b) => a + b;

// 泛型:返回第一个元素
function first<T>(arr: T[]): T | undefined {
    return arr[0];
}
const n = first([1, 2, 3]);     // number | undefined
const s = first(["a", "b"]);    // string | undefined

// 泛型约束
function logLength<T extends { length: number }>(x: T): void {
    console.log(x.length);
}
logLength("hello");   // 5
logLength([1, 2, 3]); // 3