老师,类类型和实例类型怎么区分呢?typeof Greeter这块没搞懂

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

biubiuQAQ

2019-05-31

typeof Greeter,意思是取 Greeter 类的类型,而不是实例的类型,这句话没明白
试了一下typeof Greeter返回值是function
let greeterMaker: typeof Greeter = Greeter,那这句代码是不是就相当于let greeterMaker: function = Greeter?
后面又讲到typeof Greeter这个类型包含了类的所有静态成员和构造函数,为啥function包含了类的所有静态属性和构造函数呢?

写回答

1回答

ustbhuangyi

2019-05-31

Greeter 是实例类型,typeof Greeter 就是类类型。
类是即可当做值,也可以当做类型的。
比如 let greeter:Greeter 这里的 Greeter 就被当做类型,同理
typeof Greeter 这里也是当做类型,而不要去对它求值,所以你对它求值是没有意义的。

这些都是 TypeScript 的规范,TypeScript 根据这些规范编译,你要跳出 JavaScript 运行时的逻辑,因为编译后运行的 JavaScript 的代码,也就没有这些类型了。



1
4
Joshua_Lee
"Greeter 是实例类型,typeof Greeter 就是类类型" 按对这句话的理解: greeter的值只能是'class Greeter'的实例? greeterMaker的值只能是'class Greeter'这个类?还是说构造函数的定义,跟'class Greeter'内部的构造函数定义一样的类?又或者是跟'class Greeter'内部所定义的东西一模一样的类?
2020-12-09
共4条回复

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

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

2629 学习 · 877 问题

查看课程