老师帮忙解答下,两个问题

来源: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类也一样 。

0
0

晋级TypeScript高手,成为抢手的前端开发人才

轻松驾驭 TypeScript 高级用法, 突破前端成长瓶颈

871 学习 · 425 问题

查看课程