为何在TypeScript中可将Class作为类型使用?如word: Word示例
TypeScript中类可作为类型使用的原因
在TypeScript里,类具备双重身份:它既是JavaScript层面的值(即构造函数,用于创建实例),同时也是TypeScript类型系统中的类型(用于约束变量的结构)。
具体拆解:
- 作为值的类:就是你写的
class Word { ... }本身,对应运行时的构造函数,能通过new Word("apple", "苹果")创建实例,这和普通JavaScript类的行为一致。 - 作为类型的类:TypeScript会自动根据类的定义生成一个隐式的接口类型,这个类型描述了该类实例的结构(包括所有公开属性、方法)。比如你代码里的
add(word: Word),这里的Word就是这个隐式类型,它要求传入的参数必须是Word类的实例,或者结构与Word实例匹配的对象(因为TypeScript采用结构类型系统)。
这种设计的好处是无需额外定义重复的接口,直接复用类的定义来做类型约束,让代码更简洁。比如如果不用类作为类型,你得单独写:
interface Word { term: string; def: string; }
而用类的话,直接用Word就能同时兼顾构造实例和类型约束的需求。
补充:你代码里的
Word类构造函数虽然接收了term和def,但没有赋值给实例属性(比如this.term = term),实际使用时word.term会报错,记得在构造函数里把参数绑定到实例上。
内容的提问来源于stack exchange,提问作者Gianna
相关产品推荐
相关产品推荐

