TypeScript中返回this的对象方法应该设置什么返回类型?
解决方案
有两种无需预先定义接口的实现方式:
方式1:直接使用this作为返回类型
这是最简便的方案,TypeScript 会自动将this匹配为当前对象的类型,后续给对象新增方法也不需要修改类型标注,天然支持链式调用场景:
const console = { write(text: string): this { /* logic */ return this; }, writeLine(text: string): this { /* logic */ return this; } };
方式2:通过typeof直接引用对象类型
如果需要显式固定返回类型为当前对象的类型,可以直接用typeof 变量名获取对象类型进行标注:
const console = { write(text: string): typeof console { /* logic */ return this; }, writeLine(text: string): typeof console { /* logic */ return this; } };
两种方式的差异
this类型支持上下文自动适配:如果后续基于该对象做派生、扩展,方法返回类型会自动匹配新的实例类型,适合可扩展的场景typeof 变量名类型固定:不会受this指向变化、对象派生的影响,返回类型严格和初始对象的类型保持一致
内容的提问来源于stack exchange,提问作者Dinu
相关产品推荐
相关产品推荐

