5-26作业回答
来源:5-26 【TS继承源码】逐行深剖,手写TS继承JS源码-8

寂寞追不上我
2021-08-28
构造函数应该默认返回当前的实例对象(也就是this),当没有返回值或返回值为非引用类型的时候,默认返回当前的实例对象(this),如果返回引用类型的话,则构造函数返回该引用类型。
不过,如果在ts里手动的去改constructor的返回值,改成非this,ts会编译报错
1回答
-
keviny79
2021-08-28
// 特殊情况:
// 1 构造器返回类[Customer],如该类[Customer]包含本类[UserService]
// 中所有的属性和方法【Customer包含了UserService的name,methone],
// 且访问修饰为public或默认为public,那么就能正确返回Customer,
// 而且断言也成功[见S100行代码][第六章会讲类型断言]
// 2 使用场景:当我们两个类,没有或不想建立继承关系[有时想减少类间的关联]==>
// ==>但还想在一个类中返回其他的类时使用,在Vue3源码的Ref RefImpl有用到
// 3 这种返回局限性:被返回类要完全包含当前类中属性和方法.且必须为public
class UserService {
constructor() {// 正确
return new Customer
}
name: string
public methodOne() { }
}
(new UserService() as Customer)// 第六章会讲到的一种类型断言 S100
class Customer {
name: string
public methodOne() { }
age: number
public methodtwo() { }
}
00