TypeScript规则noImplicitAny设为false仍报react-leaflet-universal声明缺失
问题原因
该报错属于模块类型定义缺失报错,和noImplicitAny规则管控的场景无关:noImplicitAny仅用于管控代码中变量无显式类型且TS无法自动推导出类型的隐式any场景,并不会覆盖「无法找到模块类型声明」的校验逻辑,因此修改该配置不会生效。
解决方案
可按优先级从高到低选择以下方案解决:
- 方案1:安装官方类型包
先执行报错提示的命令尝试安装社区贡献的类型定义:
如果npm仓库存在对应类型包,安装完成后报错会直接消失。npm i --save-dev @types/react-leaflet-universal - 方案2:新增自定义类型声明
如果不存在对应@types包,手动添加声明文件即可:- 在项目根目录新建
custom.d.ts文件,写入以下内容:
declare module 'react-leaflet-universal';- 修改
tsconfig.json的include字段,将新增的声明文件纳入TS校验范围:
重启TS服务后报错就会消失,同时该模块默认会被推导为any类型,符合预期。"include": [ "next-env.d.ts", "**/*.ts", "**/*.tsx", "custom.d.ts" ] - 在项目根目录新建
- 方案3:临时忽略校验(不推荐)
如果只是临时测试不想加声明,可在导入语句上方加忽略注释:
该方案只会跳过当前导入语句的校验,不会全局影响其他TS规则。// @ts-ignore import * as ReactLeafletUniversal from 'react-leaflet-universal';
内容的提问来源于stack exchange,提问作者andriejka
相关产品推荐
相关产品推荐

