老师帮忙解答下,两个问题
来源:1-1 课程导学

mohf3126361
2022-05-11
问题1: 请问一下, Demo类实例方法的两种写法(写法1 和 写法2)有什么不同吗? 实际场景中用的是哪一种?
问题2: 另外在接口中也有类似的这两种写法, 也帮忙解释一下,两种写法是不是一样的?
class Demo {
x_point: number;
y_point: number;
constructor(x_ponit_: number, y_ponit_: number) {
this.x_point = x_ponit_;
this.y_point = y_ponit_;
}
// 实例方法——写法1(类似匿名函数表达式写法)
getDistance1 = (x: number, y: number): number => {
return Math.pow(x - this.x_point, 2) + Math.pow(y - this.y_point, 2);
};
// 实例方法——写法2(类似命名函数写法)
getDistance2(x: number, y: number): number {
return Math.pow(x - this.x_point, 2) + Math.pow(y - this.y_point, 2);
}
}
const demo = new Demo(1, 2);
console.log(demo.getDistance1(3, 4));
console.log(demo.getDistance2(3, 4));
请问一下, Demo类实例方法的两种写法(写法1 和 写法2)有什么不同吗? 实际场景中用的是哪一种?
另外在接口中也有类似的这两种写法, 也帮忙解释一下,两种写法是不是一样的?
interface AA {
x: number;
y: number;
getDistance: (x: number, y: number) => number;
}
interface BB {
x: number;
y: number;
getDistance(x: number, y: number): number;
}
1回答
-
keviny79
2022-05-11
区别1: 接口没有具体实现,类有具体实现, 接口更适合用于只有属性没有方法或方法很少的场景,反之用类。比如:一个学生类,那么肯定用class , 如果你新建一个零时的没有方法的对象,用接口。
联系1: 有时 有多个相同性质的类可以提取出接口,比如 HashSet 类, TreeSet(扩展)类,就可以抽象出来一个接口Set, 好处1:就是不用看长长的类 就能马上知道 类的成员,好处2:需要添加方法,只需在接口中加,所有的类会自动提示添加,方便维护和修改,好处3:就是可以为所有类定义相同方法名的方法,提升可读性和可维护性。
区别2: TS 接口 属于 TS专属,编译成 js就不存在了,但 TS类会转换成 函数,ES6类也一样 。
00
相似问题