使用vue3+ts开发项目,绑定全局utils对象,每增加一个方法都需要在.d.ts中修改interface Utils

使用vue3+ts开发项目,想要在window下面绑定utils对象,里面都是公共方法,因为ts限制要在.d.ts中对window定义接口,这里就遇到问题了,现在我的utils里面只有一个getBreadPath方法,那如果每次我添加方法进去,岂不是每次都要去修改interface Utils?这样感觉很麻烦啊!

或者用这种形式可以代替全部么?
[propName: string]

.d.ts声明

// common.d.ts
interface Utils {
  getBreadPath: (activeMenu: string) => string,
  
}

declare interface Window {
  utils: Utils
}
阅读 2.5k
1 个回答

这种通常不需要声明吧,直接

// utils.tsx
export default {
    getBreadPath: (activeMenu: string) => activeMenu,
    newFeatuer: (p1...) => ...
}

然后调用的时候

import Utils from 'utils';
Utils.getBreadPath('test');

这样就可以了。TS可以自动推断类型检查的,不是必须声明。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题