TypeScript如何不声明变量、不做类型转换直接返回interface实例
可以实现,你需要的正确写法非常简单
你已经在函数签名处显式声明了返回类型为对应接口,直接返回符合结构的对象字面量即可,TypeScript会自动完成完整的严格类型检查,不需要额外声明变量、也不需要做类型断言。
正确示例代码
interface Thing { id: number, name: string } function getThing(): Thing { // 直接返回对象字面量即可 return { id: 1, name: 'my thing' } }
类型检查能力说明
这种写法完全保留了你需要的强类型校验能力:
- 如果返回对象缺少
id/name属性,TypeScript会直接抛出编译错误 - 如果
id/name的属性类型和接口定义不匹配,也会触发报错 - 若开启了严格对象字面量检查,返回对象携带接口未定义的多余属性同样会报错
和类型断言写法的区别
你之前用到的<Thing> {}属于类型断言写法,这种写法会强制TypeScript将对象识别为Thing类型,会绕过部分类型校验;而直接返回对象字面量的写法,TypeScript会完全按照Thing的定义校验返回值,不存在类型校验削弱的问题。
内容的提问来源于stack exchange,提问作者Coding Flow
相关产品推荐
相关产品推荐

