实例类型和类类型问题

来源:3-16 类 - 抽象类+ 高级技巧

Joshua_Lee

2020-12-09

class Greeter {
  static standardGreeting = 'Hello, there'
  
  greeting: string

  constructor(message?: string) {
    this.greeting = message
  }

  greet() {
    if (this.greeting) {
      return 'Hello, ' + this.greeting
    } else {
      return Greeter.standardGreeting
    }
  }
}

let greeter: Greeter
greeter = new Greeter()
console.log(greeter.greet())

let greeterMaker: typeof Greeter = Greeter
greeterMaker.standardGreeting = 'Hey there'

let greeter2: Greeter = new greeterMaker()
console.log(greeter2.greet())

"Greeter 是实例类型,typeof Greeter 就是类类型"
按对这句话的理解:
greeter的类型是Greeter的实例类型,那它的值只要包含’class Greeter’的实例部分即可?
greeterMaker的类型是Greeter的类类型,那它的值只要包含’class Greeter’静态部分即可?

写回答

1回答

ustbhuangyi

2020-12-10

你的理解没错

0
1
Joshua_Lee
“greeter的类型是Greeter的实例类型”,还有一个问题: 如果我定义一个新的类NewGreeter,这个类内部定义和Greeter一模一样,然后通过NewGreeter实例化一个对象,这个对象可以赋值给greeter变量吗? 类类型同问,NewGreeter是否可以赋值给greeterMaker?
2020-12-10
共1条回复

下一代前端开发语言 TypeScript从零重构axios

课程从零开始重构功能完整的JS库,是学习造轮子的不二之选!

2629 学习 · 877 问题

查看课程