TypeScript扩展类型时如何为第三方库的嵌套类型新增字段
实现方案
方案1:局部自定义扩展类型(推荐单次/少场景使用)
你可以通过TS交叉类型结合Omit工具类型,在不修改原第三方类型的前提下生成符合需求的新类型:
// 第一步:扩展原Deposit类型,新增需要的字段 type ExtendedDeposit = Deposit & { num3: string; num4: string; } // 第二步:替换Nice类型中的deposit字段类型为扩展后的类型 type ExtendedNice = Omit<Nice, 'deposit'> & { deposit: ExtendedDeposit }
后续你在业务中直接使用ExtendedNice类型即可,完全符合你要求的结构,也不会污染第三方库的原始类型定义。
方案2:全局模块补充(推荐全项目通用扩展)
如果整个项目都需要用到扩展后的Deposit字段,可以通过TS的模块声明补充能力,全局扩展第三方库的类型定义:
- 新建
.d.ts后缀的全局声明文件(比如global.d.ts,放在项目src目录下即可) - 补充如下声明,注意将
third-package-name替换为你实际引入的第三方库的包名:
declare module 'third-package-name' { interface Deposit { num3: string; num4: string; } }
配置完成后,整个项目中所有用到Deposit和Nice类型的地方,都会自动带上新增的num3、num4字段,不需要额外自定义新类型。
内容的提问来源于stack exchange,提问作者Nika Kurashvili
相关产品推荐
相关产品推荐

