如何覆写外部库中声明的type类型(非interface类型)
TypeScript 的type别名本身不支持声明合并,因此无法像interface那样通过同名声明直接覆写第三方库的原始type定义,可通过以下两种方案实现需求:
方案1:本地别名替换(无侵入,推荐)
在你的项目中单独定义业务用的类型别名,业务代码统一使用该别名替代库原生的Column即可:
// 示例:在 src/types/index.ts 中定义 import type { Column as OriginalColumn } from '目标第三方库包名' // 直接覆写为你需要的类型 export type Column = string | number
如果需要保留原类型的部分能力,也可以做筛选后拓展:
export type Column = Exclude<OriginalColumn<{}>, SthUnnessary<{}> | SthUnneededAsWell<{}>> | string | number
后续业务代码直接导入你自定义的Column使用即可。
方案2:全局模块覆写(全量替换库导出)
如果需要让所有从该库导入的Column都自动生效为你的定义,可在项目全局声明文件(比如global.d.ts,需确保该文件在tsconfig.json的include数组范围内)中声明模块覆写:
declare module '目标第三方库包名' { // 先导出库的所有原有类型,避免其他导出丢失 export * from '目标第三方库包名' // 自定义的同名类型会覆盖原库的导出 export type Column<D extends object = {}> = string | number }
注意:如果覆写不生效,可调整
tsconfig.json中全局声明文件的包含顺序,确保优先级高于库自带的类型声明。
内容的提问来源于stack exchange,提问作者kspacja
相关产品推荐
相关产品推荐

