如何重写覆盖d.ts

  1. 场景是这样的

index.ts

import { Checkbox, Table, message } from 'antd'

但是我希望 开发者不要使用antd的message,我希望使用message时编辑器提示为null。

  1. 我的方案:

写了一个声明文件,antd.d.ts~~~~

写法一,ts报错 且 index.ts 无覆盖变化

import 'antd'

declare module 'antd' {
  export const message: null // 后续变量声明必须属于同一类型。变量“message”必须属于类型“MessageApi”,但此处却为类型“null”~~~~
}

写法二,


declare module 'antd' {
  export const message: null
}

在index.ts 虽然提示message为null了,但是antd其他声明~~也被覆盖了~~

import { Checkbox, Table, message } from 'antd' // 模块“"antd"”没有导出的成员“Checkbox”

怎么样可以达到预期(上面黑体加粗)

阅读 7.7k
1 个回答

eslint 配置以下规则:

"no-restricted-imports": ["error", {
  "paths": [{
    "name": "antd",
    "importNames": ["message"], // 如果有多个不想用的模块,都可以放到数组里
    "message": "禁止使用 message 组件"
  }]
}]
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进