Angular9升级时polyfills.ts报Element类型无msMatchesSelector属性错误
解决方案
你遇到的是TypeScript全局类型声明未生效的问题,Angular9默认的tsconfig配置可能未自动加载你新增的自定义类型定义,按以下步骤操作即可解决:
- 第一步:修改你创建的
dom.ie.d.ts文件内容,将接口声明包裹在全局声明块内,避免被识别为模块内局部类型,修正后的代码如下:
declare global { interface Element { msMatchesSelector(selectors: string): boolean; } } // 加空导出将文件标记为模块,确保全局声明生效 export {};
- 第二步:打开项目根目录下的
tsconfig.app.json,检查include配置项,确保已经包含了自定义类型文件的路径,示例配置如下:
{ "include": [ "src/**/*.ts", "src/**/*.d.ts" ] }
如果之前include数组里没有src/**/*.d.ts,加上后重启开发服务或者重新执行编译即可。
- 临时应急方案:如果只需要快速跳过报错完成编译,可以在调用
msMatchesSelector的位置使用类型断言,写法如下:
// 替换为你实际的调用代码 const isMatch = (element as any).msMatchesSelector('.my-selector');
注意:类型断言只是临时跳过类型检查,优先使用前两种方案完善类型定义。
内容的提问来源于stack exchange,提问作者hullunist
相关产品推荐
相关产品推荐

