定义方式
- 可选参数:在参数名后加
?
表示该参数可选。例如:
function greet(name?: string) {
if (name) {
console.log(`Hello, ${name}!`);
} else {
console.log('Hello!');
}
}
- 默认参数:直接在参数名后使用
=
为参数指定默认值。例如:
function greet(name = 'Guest') {
console.log(`Hello, ${name}!`);
}
使用场景
- 可选参数:适用于某些调用场景下该参数可有可无,且调用方可能传递
undefined
来明确表示该参数缺失的情况。例如:
function printUserInfo(user: { name: string; age?: number }) {
console.log(`Name: ${user.name}`);
if (user.age) {
console.log(`Age: ${user.age}`);
}
}
const user1 = { name: 'Alice' };
const user2 = { name: 'Bob', age: 30 };
printUserInfo(user1);
printUserInfo(user2);
- 默认参数:适用于大多数情况下该参数有一个合理的默认值,调用方无需每次都指定该参数值的场景。比如在一些工具函数中,像获取当前时间的函数,默认返回当前时间,调用方可以不传入参数。
function getFormattedDate(date = new Date()) {
return date.toISOString();
}
console.log(getFormattedDate());