最近,we started reporting high-confidence errors for typos as suggestions in the language service。我们认为有一套值得犯错的语法问题没有在今天报告(例如:重复的块作用域变量、扩展多个类、剩余参数出现在常规参数之前等)。
未解决的问题:
- 我们如何将其作为API的一部分实现?
- 在这里允许哪些类型的错误?
- 我们会给出与任何流行运行时、构建工具或语法扩展相悖的错误吗?
最近,we started reporting high-confidence errors for typos as suggestions in the language service。我们认为有一套值得犯错的语法问题没有在今天报告(例如:重复的块作用域变量、扩展多个类、剩余参数出现在常规参数之前等)。
未解决的问题:
4条答案
按热度按时间eulz3vhy1#
这是我的粗略笔记,稍作整理。这里只包括绑定错误。
运行时错误
这些错误都是JS中的错误,至少在V8中是这样。它们主要适用于严格模式下的上下文:.mjs文件和类体。实际上,这些错误足够好,它们应该使用与TS相同的规则:任何使用ES导出的JS文件都被视为真正的ES模块,并处于严格模式。(尽管目前.js文件通常是CommonJS。)
这些错误应始终提供给JS文件。
诊断
sqougxex2#
@orta指出,在尝试将
+= 'foo'
赋值给const字符串时,显示Diagnostics.Cannot_assign_to_0_because_it_is_a_constant在JS中将会非常有用。
hgc7kmma3#
同样地,在定义之前使用的变量也对
let``/const
变量有帮助。ki1q1bka4#
以下是从
grammarErrorOnNode
中调用的有关错误的详细列表。这不是所有的语法错误,但这是一个方便的方法将它们分类。检查器错误似乎更容易区分相关和不相关的错误,但也许那是因为我已经看过足够多的错误了。此列表中有67个错误,从184个
grammarErrorOnNode
调用中产生。这些3个错误需要改进,但至少前两个应该在JS和TS中表现相同
junk.#m
(你得到更好的错误如果C被定义,甚至更好如果C.#m被定义)但这不会在任何JS运行时上运行,所以可能不应该适用
以下是翻译后的文本内容: