TypeScript中@ts-ignore无法屏蔽废弃属性警告,求替代注释
TypeScript中@ts-ignore无法忽略废弃属性警告的解决办法
在TypeScript v5.5.4版本中,使用// @ts-ignore注释尝试忽略废弃属性的警告时会出现失效情况,但该注释对不可达代码类警告依然有效。以下是复现场景:
window.onkeydown = function(e) { // @ts-ignore: 该注释无效,警告仍会显示。:( console.log(e.keyCode); if (false) { // @ts-ignore: 该注释生效,警告被隐藏。 console.log("hello"); } }
此时e.keyCode触发的警告为:
'keyCode' is deprecated.(6385) lib.dom.d.ts(14645, 8): The declaration was marked as deprecated here
可用的替代注释方案
1. // @ts-expect-error
这个注释的设计目的就是明确预期下一行代码会产生类型检查问题,它可以可靠地忽略该行的所有错误和警告,包括废弃属性提示。修改后的代码示例:
window.onkeydown = function(e) { // @ts-expect-error: 忽略keyCode的废弃警告 console.log(e.keyCode); if (false) { // @ts-ignore: 该注释生效,警告被隐藏。 console.log("hello"); } }
2. // @ts-nocheck
如果需要忽略整个文件的所有类型检查警告,可以在文件最顶部添加这个注释。但注意这是全局生效的,会关闭整个文件的类型校验,建议谨慎使用。
补充说明
@ts-ignore在部分场景(如废弃警告)中失效,是因为TypeScript后续版本对其处理逻辑做了调整,相比之下@ts-expect-error的语义更明确,对各类警告的覆盖更全面,更适合这类精准忽略的场景。
内容的提问来源于stack exchange,提问作者vanchagreen
相关产品推荐
相关产品推荐

