【发布时间】:2020-11-09 04:36:28
【问题描述】:
我在调试过程中注意到,我最难找到的笨拙错别字是如下结果语句:
if (id = userId) {..}
And for class methods:
let result = myClass.doThis;
出于某种原因,VSCode 不会在编译时将这些标记为潜在问题。是否有设置或工具可以警告我此类错误?有时它们很难找到并且花费了我很多时间来追踪,因为它们在您扫描时并不那么明显并且难以搜索。
我知道这些是合法的打字稿语句,但其他一些语言的 UI 会标记条件中的赋值和称为属性的方法,以确保这确实是您想要做的。
【问题讨论】:
-
使用 linter。带有 typescript 插件的 eslint 是前进的方向,因为 tslint 现在已经贬值了。他们会抓住 if 的情况。但是,您的第二个示例是完全有效且合理的代码,因此我认为没有任何理由对其进行标记。如果类方法不带任何参数并且是同步的,请考虑将其设为属性访问器
-
我想知道在 let result=myClass.doThis; 中将类方法保存在变量中是多么有用。什么时候有用?如果“doThis”是一个依赖于类的任何其他属性的方法,那么如果没有实例的正确“this”上下文,调用 result() 将不会有多大好处。
-
好吧,有时你绑定它并传递,或者你正在创建某种适配器,但考虑
object.member的更一般情况,其中object只是一些属性包。我几乎从不使用this,除非框架强迫我。无论如何,这些天的 linters 是高度可定制的,我敢肯定有人已经写过这样的规则,但我想除了推荐一个工具之外,我还会给你我的意见,因为好吧......我们正在谈论 linter :}跨度> -
谢谢。实际上让 ESLint 工作有困难,但我会继续摆弄。
标签: typescript visual-studio-code tslint typescript-eslint