d.ts 中如何覆盖全局类型?
在uni-app使用ts开发中,uni-app的promise类型返回值是错误的,我将这个错误纠正后形成一个新的类型,但我却无法覆盖 declare const uni: UniApp.Uni;
的类型,我应该如何覆盖全局模块定义的类型?
这个是我定义正确的uniPromiseApi返回的类型
// types/uni.d.ts 解决uni, promise返回值不正确
type Empty = null | undefined | void | never;
type IfElse<T, D> = T extends Empty ? D : T;
type Else<T, D> = T extends Empty ? never : D;
type NonNullable<T> = T extends Empty ? never : T;
type PromiseUni<T = UniApp.Uni> = {
[P in keyof T]: (
...args: Parameters<T[P]>
) => IfElse<
ReturnType<T[P]>,
Else<
Parameters<Parameters<T[P]>[0]['success']>[0],
Promise<
[
Parameters<Parameters<T[P]>[0]['fail']>[0],
Parameters<Parameters<T[P]>[0]['success']>[0]
]
>
>
>;
};
然后无论我怎么定义,都不能覆盖 uni 的类型
// 没有效果
declare module '@dcloudio/types' {
declare const uni: PromiseUni;
}
// 没有效果
declare module '@dcloudio/types/uni' {
declare const uni: PromiseUni;
}
// 没有效果
declare const uni: PromiseUni;
目前只能使用 as 断言方式解决问题,有木有更好的方法?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
类似这样,比如往vue中添加一个全局方法,
比如给axios添加一个code、msg检验,