有没有办法忽略一行,就像在 jshint 中一样?
我试过 // tslint ignore:line但这似乎不起作用。
不幸的是,我们还没有这样的东西。 您必须显式启用和禁用该行。
你如何禁用一条线?
https://github.com/palantir/tslint#tslint -rule-flags
对于在这里找到解决方法的任何人
/* tslint:disable */ - Disable all rules for the rest of the file
/* tslint:enable */ - Enable all rules for the rest of the file
例如/* tslint:disable */ window['foo']= window['bar']; /* tslint:enable */
是否对实现与上述类似的功能进行了任何调查?
@patsissons到底是什么功能? 当前可以启用/禁用带有两个注释的单行。
该功能将不那么冗长的行禁用。 ESLint
有多种执行单行规则禁用的方法。
例如,
// eslint-disable-next-line rule-name
var x; // eslint-disable-line rule1 rule2
包装方法非常适合作为复杂规则禁用的冗余,但内联(或下一行)往往会使代码污染较少(这当然是我的观点,但可能不是那么不合理)。
这是嘈杂的:
/* tslint:disable */ window['foo']= window['bar']; /* tslint:enable */
这要好得多:
var x; // eslint-disable-line rule1 rule2
或者甚至只是:
var x; // tslint:disable
这是一行注释这一事实意味着它只会禁用那一行我认为很好。
或者最坏的情况:
var x; // tslint:disable-line
为此接受 PR。 这是最近的一些相关更改,允许//
而不是/*
禁用评论(尽管仍然需要两条评论): https :
我今晚会尝试做这个,如果不是太具有挑战性,希望今晚也能做个公关
👍 让我们在这里密切关注 ESLint:
someCode(); // tslint:disable-line
// tslint:disable-next-line
someCode();
和
someCode(); // tslint:disable-line:rule1 rule2
// tslint:disable-next-line:rule1
someCode();
这正是我想要实现的:+1:
不过,为了清楚起见,ESLint 不使用冒号,它们的样式如下:
// eslint-disable-next-line rule1, rule2
someCode();
我假设您希望我们坚持上面包含的 TSLint 样式(冒号和没有逗号分隔规则)。
👍 让我们坚持 TSLint 风格以保持一致性
我现在有这个工作,我只是在创建 PR 之前进行一些提交清理。 策略是将-line
和-next-line
变体转换为它们等效的完全表达的注释开关。 这是通过跟踪行开始位置(对于-line
开关)并执行下一行结尾的前瞻(对于-next-line
开关)来完成的。 这些似乎工作得很好并且副作用很小,因为它只是充当更详细格式的别名。
在我整理 PR 之前请注意,由于禁用间隔代码的工作方式,您将无法执行此类操作
// tslint:disable-next-line:quotemark variable-name
var AAAaA = 'test' // tslint:enable-line variable-name
老实说,我从没想过有人会做这样的事情,但我只是想在这里说明一下。 您仍然可以像这样进行标准嵌套
// tslint:disable
var AAAaA = 'test' // tslint:enable-line:quotemark
// tslint:enable-next-line:variable-name
var AAAaA = 'test'
// tslint:enable
关于实施的问题,这行得通吗?
/**
* this is a very long line and violate max-line-length. // tslint:disable-line:max-line-length
*/
不,开关注释不是这样解析的,它们必须正确格式化。 我相信在您的示例中,您会将单行禁用注释放在多行注释之外,这应该会按预期工作。
谢谢解惑,明白了。
@lijunle只是重新审视您的示例,我认为我的解释实际上有些不正确。 我认为您无法通过单行禁用来达到预期的结果。 我相信解析器将无法返回以正确禁用整个多行注释。 要禁用多行注释中的规则,您需要用开关对包装注释。
以上均无效
你们是在谈论功能提议还是已经实施的提议?
很难跟上
@phil123456 https://github.com/palantir/tslint#rule -flags
// tslint:disable-next-line <optional rule identifier>
var foo = 123;
^链接已移至此处: https :
该死的地狱。 “抑制”和“忽略”这两个词都没有出现在该文档中。 我不敢相信我花了多少谷歌搜索才解决了这个问题,阅读了上面的所有内容,才发现它是一个受支持的记录功能,但是文档中没有相应的关键字,所以谷歌是不可能的。 您是否必须克隆整个 repo 并为此提交 PR,或者是否有更快的方法来建议修复 .md 文件?
@pbarranis您可以制作一张新票作为功能请求。 如果他们不进行更改,那么下一步可能是进行 PR。
顺便说一句,您也可以在同一行上执行此操作:
console.log("poop"); // tslint:disable-line no-console
这不适用于ordered-imports
等规则
//@ts-ignore
https://palantir.github.io/tslint/rules/
//@ts-ignore
https://palantir.github.io/tslint/rules/
不幸的是,这个页面只展示了如何禁止使用它。 它没有显示如何正确使用它,也没有解释当你使用它时 tsLint 忽略了多少。 不知道为什么这个页面上没有提到它解释了如何抑制规则https://palantir.github.io/tslint/usage/rule-flags/
我同意上面的评论,问为什么这个页面没有提到“抑制”或“忽略”这样的词,以便在使用谷歌时可以很容易地找到它?
仅供参考,此页面现在说 TSLint 今年将停产: https :
啊,tslint 最终(尚未)合并到 eslint 中,所以我想这很好。
关键是,现在tslint
支持忽略下一行功能。
例子:
// tslint:disable-next-line
或者
// tslint:disable-next-line:rule1 rule2 rule3
有关更多详细信息和示例,请参阅https://palantir.github.io/tslint/usage/rule-flags/
🤖 哔哔! 👉 TSLint 已弃用👈,您应该切换到typescript-eslint ! 🤖
🔒 此问题已被锁定,以防止进一步不必要的讨论。 谢谢! 👋
最有用的评论
对于在这里找到解决方法的任何人
例如
/* tslint:disable */ window['foo']= window['bar']; /* tslint:enable */