目前小弟呆在一家小公司,开发算上我只有两个人。我的上司,负责后端,在我眼里他技术比我好得多,会 Java 、Python 、JS ...我写前端,后端会一些 Node 、Python 。
事情是这样的,有一次提完 PR ,上司 review 我代码的时候跟我说,方法传参用基本类型,别用对象。以及对象的状态属性别挂载在对象上,不需要接口或者类类型来约束。
举例
// 使用基本类型传递多个参数的方式
function printUserInfo(name, age, country) {
console.log(`Name: ${name}`);
console.log(`Age: ${age}`);
console.log(`Country: ${country}`);
}
// 调用函数时直接传递多个基本类型参数
printUserInfo('John', 30, 'USA');
// 使用对象解构赋值传递多个参数的方式
function printUserInfo({ name, age, country }) {
console.log(`Name: ${name}`);
console.log(`Age: ${age}`);
console.log(`Country: ${country}`);
}
// 调用函数时传递一个包含多个参数的对象
const user = {
name: 'John',
age: 30,
country: 'USA'
};
printUserInfo(user);
数组成员之前用了 YourClass 类作为类型,现在需要新增表示加载状态的属性。
class YourClass {
// 类的属性和方法
}
interface WithLoadingStatus {
isLoading: boolean;
}
type YourTypeWithLoadingStatus = YourClass | WithLoadingStatus;
const array: YourTypeWithLoadingStatus[] = [
new YourClass(),
{ isLoading: true },
{ isLoading: false }
];
观点
针对第一点,我理解的是,少量参数传参用基本类型,多个用对象。上司的意思大概是,以前栈空间小,会用到对象。其次,对象参数假设在方法内被修改会改变原对象。对方的意思我理解,引用类型作为参数传递的是指针,但是解构赋值相当于声明了局部变量,除了性能上会有额外开销,似乎并不会影响原对象。假设我需要在原有方法上新增参数,使用对象参数可以不用考虑传参顺序。用基本类型的话,调用方法的时候,有些默认参数需要显式的写上去。
针对第二点,上司觉得和 UI 相关的属性不应该写在类类型里,让我了解面向接口编程。看完之后我的理解是,TS 中接口是对对象属性进行约束,面向接口编程中的接口更多的是描述行为方法(实现多继承等),这两者似乎不能等价。
诉求
因为我思维比较发散,跟人沟通容易跳跃。最近忙完手头的开发事务又想起这件事情,也许上次并没有沟通明白。请大家说说自己的看法或建议,谢谢!