TS - 扩展模块类型时要在顶级处添加 export {}
如果在 .d.ts
文件中扩展 Element、HTMLElement 这种内置的全局类型接口时,直接写就可以了。
file:[types/shim-elems.d.ts]
declare interface Element {
innerText?: string;
}
如果扩展的是第三方模块,比如 axios。还是按照上面这样的做法是不对的,这相当于在全局声明了一个 AxiosInstance,并没有扩展到第三方模块里面的 AxiosInstance 类型。
file:[types/shim-axios.d.ts]
declare module "axios" {
interface AxiosInstance {
ejectReq: () => AxiosInstance;
ejectRes: () => AxiosInstance;
}
}
所以,对于上述情况,我们需要在顶处添加一个 export {}
或者 import
语句,export {}
确保该文件不会覆盖 axios 模块下原来的类型。
file:[types/shim-axios.d.ts]
export {};
declare module "axios" {
interface AxiosInstance {
ejectReq: () => AxiosInstance;
ejectRes: () => AxiosInstance;
}
}
分类:
软件开发 / Web 前端
标签:
TypeScript
, 问题解决
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步