共计 1252 个字符,预计需要花费 4 分钟才能阅读完成。
背景
目前小弟呆在一家小公司,开发算上我只有两个人。我的上司,负责后端,在我眼里他技术比我好得多,会 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 中接口是对对象属性进行约束,面向接口编程中的接口更多的是描述行为方法(实现多继承等),这两者似乎不能等价。
诉求
因为我思维比较发散,跟人沟通容易跳跃。最近忙完手头的开发事务又想起这件事情,也许上次并没有沟通明白。请大家说说自己的看法或建议,谢谢!
正文完