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() { }

}


//img.mukewang.com/szimg/61297aba08e447d910150640.jpg

0
0

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

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

871 学习 · 425 问题

查看课程

相似问题

5-26,this

回答 1

作业

回答 1

9-27作业

回答 1

2-5问答

回答 2