TS2583报错找不到Set 加es2015引用指令是否影响IE11兼容性
核心结论
添加/// <reference lib="es2015"/>指令不会导致TypeScript编译器生成不兼容IE11的JavaScript代码,具体原因和注意事项如下:
- 三斜杠reference指令的作用仅为引入ES2015对应的类型定义,仅用于TypeScript静态类型检查阶段,完全不会修改最终编译输出的代码内容。
- 你的
tsconfig.json中已经将compilerOptions.target设置为es5,无论是否加这条指令,编译器最终都会输出符合ES5语法规范的JavaScript代码。
额外排查建议
你已经在tsconfig.json的lib字段中配置了es2015,正常情况下不需要额外添加三斜杠reference指令即可识别Set类型,IDE报错可以先排查两个问题:
- 你贴出的
tsconfig.json存在语法错误,compilerOptions配置块闭合后,整个JSON对象缺少最后一个闭合的},会导致配置解析失败。 - 可以尝试重启IDE的TypeScript语言服务,确认IDE已经正确加载项目根目录下的
tsconfig.json配置。
IE11运行兼容注意事项
IE11原生不支持ES2015新增的Set、Map等API,即使TypeScript编译出的是ES5语法的代码,直接在IE11中运行使用了Set的代码还是会报运行时错误。你需要在项目中引入对应的polyfill(比如core-js的ES2015垫片),为IE11环境补充这些缺失的API实现,才能保证代码正常运行。
内容的提问来源于stack exchange,提问作者Clear
相关产品推荐
相关产品推荐

