函数与泛型
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