TypeScript 面向对象的另一面:深入探究可选、剩余和重载
2023-10-19 00:19:12
TypeScript 面向对象:从可选参数到泛型
踏上 TypeScript 面向对象之旅,我们探索了类和接口的领域。现在,让我们深入了解一些鲜为人知的但同样强大的特性,它们将提升你的代码技能。
可选参数和默认参数
想象一个计算两个数字之和的函数。通常,我们需要两个参数,但如果其中一个可以省略呢?TypeScript 引入了可选参数。
function sum(num1: number, num2?: number): number {
if (num2) {
return num1 + num2;
}
return num1;
}
num2
是可选参数,可以传递或省略。如果没有传递,函数返回第一个数字。
默认参数与可选参数类似,但它们提供一个默认值,用于未提供参数时。
function greet(name: string, message = "Hello"): string {
return `${message} ${name}!`;
}
message
参数的默认值为 "Hello"。如果没有提供 message
,函数使用默认值。
剩余参数
有时,我们想要处理不定数量的参数。这就是剩余参数的用武之地。它们用三个点 (...) 表示。
function sumAll(...numbers: number[]): number {
let total = 0;
for (const num of numbers) {
total += num;
}
return total;
}
sumAll
接受任意数量的数字参数,并返回它们的总和。
重载
重载允许同一个函数拥有多个签名。这在处理不同类型或数量的参数时非常有用。
function formatName(name: string): string;
function formatName(firstName: string, lastName: string): string;
function formatName(nameOrFirstName: string, lastName?: string): string {
if (lastName) {
return `${nameOrFirstName} ${lastName}`;
}
return nameOrFirstName;
}
formatName
函数被重载,有两个签名:一个用于单个字符串参数,另一个用于两个字符串参数。
泛型
泛型是一种创建可重用代码的强大机制,无论数据类型如何。
function identity<T>(value: T): T {
return value;
}
identity
函数是一个泛型函数,接受一个类型参数 T
。它返回与输入值相同类型的值。
内置对象
TypeScript 提供了丰富的内置对象,例如 Array
、Object
和 Math
。这些对象提供了常用的功能,简化了编码。
const numbers = [1, 2, 3, 4, 5];
console.log(numbers.length); // 输出: 5
numbers
是一个数组对象,我们可以使用 length
属性获取其长度。
结语
可选参数、默认参数、剩余参数、重载、泛型和内置对象是 TypeScript 面向对象开发中的宝贵工具。熟练掌握这些概念可以让你编写更灵活、更可重用的代码。继续你的 TypeScript 之旅,探索模块、命名空间和装饰器等其他激动人心的特性。
常见问题解答
-
什么是可选参数?
可选参数允许你创建可以省略的参数。 -
如何为参数提供默认值?
使用默认参数语法:function foo(param = defaultValue)
。 -
剩余参数有什么作用?
剩余参数允许你处理不定数量的参数。 -
为什么要使用重载?
重载允许同一个函数具有多个签名,用于处理不同类型或数量的参数。 -
泛型有什么好处?
泛型创建可重用代码,无论数据类型如何。