基础入门
函数类型
学会为函数参数和返回值添加类型注解
函数类型
TypeScript 让你精确描述函数的参数和返回值类型。
学完本章你将: 为函数添加类型注解,掌握函数重载。
参数与返回值
typescript
// 基本函数类型
function add(a: number, b: number): number {
return a + b;
}
// 无返回值
function log(message: string): void {
console.log(message);
}
// 永不返回(抛异常或死循环)
function error(msg: string): never {
throw new Error(msg);
}
可选参数与默认值
typescript
// 可选参数
function greet(name: string, title?: string): string {
return title ? `${title} ${name}` : name;
}
console.log(greet("Alice", "Dr.")); // "Dr. Alice"
console.log(greet("Bob")); // "Bob"
// 默认参数(自动可选)
function multiply(a: number, b: number = 1): number {
return a * b;
}
console.log(multiply(5)); // 5
剩余参数
typescript
function sum(...numbers: number[]): number {
return numbers.reduce((a, b) => a + b, 0);
}
console.log(sum(1, 2, 3, 4)); // 10
// 混合固定参数和剩余参数
function log(level: string, ...messages: string[]): void {
console.log(`[${level}]`, messages.join(" "));
}
log("ERROR", "File not found", "Permission denied");
函数类型表达式
typescript
// 定义函数类型
type MathFunc = (a: number, b: number) => number;
const add: MathFunc = (a, b) => a + b;
const subtract: MathFunc = (a, b) => a - b;
// 回调函数类型
function fetchData(callback: (data: string) => void): void {
setTimeout(() => callback("数据加载完毕"), 1000);
}
函数重载
typescript
// 重载签名
function format(value: string): string;
function format(value: number): string;
function format(value: boolean): string;
// 实现签名
function format(value: string | number | boolean): string {
if (typeof value === "string") return `"${value}"`;
if (typeof value === "number") return value.toFixed(2);
return value ? "true" : "false";
}
console.log(format("hello")); // "\"hello\""
console.log(format(3.14159)); // "3.14"
console.log(format(true)); // "true"