← 返回

2025年4月17日 | n-params vs single param

在使用 TypeScript (以及,实际上,任何不支持命名参数的语言) 编写函数时,你可以选择单独传递参数 ( n params),或者将它们分组到一个对象中。 虽然两者都是有效的,但我还没有找到任何情况下,对象参数不是更好选择的理由。

假设你调用一个创建用户的函数:

const signup = () => {
 // ...
 createUser("John", "Doe", 28, true);
 // ...
};

乍一看,你能分辨出每个值的含义吗? 你只能猜测: 28 是什么? true 是什么? 你添加的参数越多,这种情况就变得越脆弱和令人困惑。

相反,考虑使用对象参数:

type TCreateUserInput = {
 firstName: string;
 lastName: string;
 age: number;
 isActive: boolean;
};
const signup = () => {
 // ...
 createUser({ firstName: "John", lastName: "Doe", age: 28, isActive: true });
 // ...
};

无需猜测,不用担心顺序。 你的代码具有自文档性。 此外,TypeScript 还为你提供完整的自动完成和类型安全。