如何优雅实现带可选对象参数及默认值的TypeScript函数?
最佳TypeScript实现方案:带可选配置与默认值的函数
步骤1:定义配置类型
先明确配置对象的类型,让TypeScript提供完整的类型校验:
type Config = { acceptNegative?: boolean; isBig?: boolean; };
步骤2:实现核心函数
用参数默认值+对象展开合并的方式处理,这是最简洁优雅的实现方案:
function doSomething(num: number, config: Config = {}) { // 合并默认值与用户传入的配置,用户配置会自动覆盖对应默认字段 const finalConfig = { acceptNegative: false, // 默认不接受负数 isBig: false, // 默认标记为非大数 ...config }; // 业务逻辑示例(可根据需求修改) if (!finalConfig.acceptNegative && num < 0) { throw new Error("当前配置不允许输入负数"); } console.log(`处理数字:${num},最终配置:`, finalConfig); }
合法调用示例
所有你要求的调用方式都能通过TypeScript类型校验:
const targetNum = 15; // 1. 不传配置对象,使用全部默认值 doSomething(targetNum); // 2. 只传部分配置字段 doSomething(targetNum, { acceptNegative: true }); // 3. 传完整配置对象 doSomething(targetNum, { acceptNegative: true, isBig: false });
方案优势
- 类型安全:TypeScript会严格校验传入的配置字段,避免非法参数
- 简洁高效:用对象展开运算符自动合并默认值与用户配置,无需手动判断每个字段是否存在
- 容错性强:给
config设置默认空对象,避免用户不传配置时出现undefined相关报错
内容的提问来源于stack exchange,提问作者Aryan Jain
相关产品推荐
相关产品推荐

