【发布时间】:2019-12-13 09:36:24
【问题描述】:
JavaScript 充满了像这样的警告:
const arr = [1, 2, 3]
for (const i in arr) {
console.log(i + 1)
}
没有经验的 JS 开发者期望的结果是1 2 3,但实际上是01 11 21。
看起来 TypeScript 默认没有警告连接字符串和数字,有没有办法做到这一点?
更准确地说:我如何才能收到有关 '1' + 1 等案例的警告
【问题讨论】:
-
您的意思是除了将添加内容包装在一个函数中吗?无论如何,您会认为至少编译器会警告您在数组上使用
for...in... -
我的意思是总是,独立于一个地方,例如在这种最简单的情况下:
console.log('1' + 1) -
"" + 1在 JS 中是允许的,所以它在 TS 中是允许的。console.log()接受字符串和数字,所以这里没有错误。但是,如果您尝试将i + 1视为数字,则会收到错误消息。 -
不可能,这是proposed and declined。
eslint或tslint是您唯一的选择。 -
@AaronBeall 比这更微妙...诸如“X 在 JS 中允许,因此在 TS 中允许”之类的语句通常是 misleading or untrue。问题是 JS 中的用法是否更可能是错误而不是有效代码?在这种情况下,很多真实世界的 JS 代码使用了像
console.log("There are " + files.length + " files")这样的结构,以至于 TS 的维护者认为这里不值得更严格。
标签: javascript typescript concatenation eslint typescript-eslint