如何在TypeScript中为解构赋值的变量添加类型声明?
TypeScript 解构赋值的类型标注方案
你尝试的const { company }: CompanyType = data;写法是完全正确的,该写法的作用是给被解构的整个data对象标注类型为CompanyType,只要你预先定义的CompanyType包含company属性、且data本身结构符合CompanyType约束即可正常运行。
除此之外还有几种常用的标注场景:
1. 仅给单个解构变量标注类型
如果你不需要对整个被解构对象做类型约束,只想给拿到的company变量指定类型,可以直接在解构语法内部标注结构:
const { company }: { company: string } = data;
如果需要同时解构多个变量,也可以直接扩展类型定义:
const { company, staffCount }: { company: string, staffCount: number } = data;
2. 带默认值的解构类型标注
如果company属性可能不存在,需要设置默认值时,要把对应属性设为可选类型:
const { company = "默认企业名称" }: { company?: string } = data;
3. 解构同时重命名变量的类型标注
注意不要把类型标注和变量重命名语法混淆:const { company: CompanyType } = data是将company属性重命名为CompanyType变量,不是类型标注。如果既要重命名又要加类型,写法如下:
// 把company属性重命名为companyName,同时标注类型为string const { company: companyName }: { company: string } = data;
4. 类型断言兜底方案
如果你确定data里的company属性一定符合预期类型,也可以通过类型断言直接标注,适合临时处理类型不匹配的第三方数据:
const { company } = data as { company: string };
内容的提问来源于stack exchange,提问作者Alien
相关产品推荐
相关产品推荐

