我不确定这是个错误还是一个功能请求:
TypeScript 版本: 3.8.0-dev.20191206,在 3.7.2 中也得到了确认
搜索词: type ignored
代码
var
/** @type {string} */
str1,
/** @type {number} */
num1;
/** @type {string} */
var str2;
/** @type {number} */
var num2;
str1 = "Hello";
num1 = "World"; // TSC does not complain => not OK
str2 = "Hello";
num2 = "World"; // TSC complains => OK
预期行为:
test.js:15:1 - error TS2322: Type '"World"' is not assignable to type 'number'.
15 num1 = "World";
test.js:18:1 - error TS2322: Type '"World"' is not assignable to type 'number'.
18 num2 = "World";
实际行为:
test.js:18:1 - error TS2322: Type '"World"' is not assignable to type 'number'.
18 num2 = "World";
Playground 链接: 在 JS PlayGround 中无法复现任何与类型相关的警告,请在本地测试
相关问题:#22434 , #13371 (有些相关)
官方的 JSDoc 文档没有提到在一个 var
语句中混合类型的问题,但我认为如果 TS 符号能正常工作,那么 JS 的行为可能也是一样的。
var str1: string,
num1: number;
2条答案
按热度按时间eh57zj3b1#
这不是我们寻找评论的地方,但我们可以添加它。老实说,如果每个变量上都有一个JS Doc类型的注解,我不明白为什么有人会这样写——你在$x^{
var
}$部分浪费了一个竖线,看起来更令人困惑🤷♂️vc6uscn92#
@RyanCavanaugh 我必须承认这是一个自私的原因。我的客户的eslint设置需要将其链接到一个
var
语句中:-(