TypeScript版本: 3.2.0-dev.20181103代码
<div></div>;
预期行为:
错误信息告诉我将文件扩展名更改为 .tsx 。
.tsx
实际行为:
错误信息显示为 Cannot find name 'div'. ,这让我觉得我需要安装 @types/div 或类似的东西。
Cannot find name 'div'.
@types/div
avkwfej41#
我可以试试这个吗?
cgfeq70w2#
当然。这可能是第一个问题,因为当我们不在.tsx文件中时,我们将<div>解析为类型Assert表达式,而不是作为开放标签。因此,它可能需要一些启发式方法来检测可能是JSX开放标签的类型Assert表达式。
<div>
ztyzrc3y3#
"简单"的方法是在.ts解析错误后尝试重新解析为.tsx,并在文件有效时给出建议作为.tsx。不确定这会产生什么性能影响。
.ts
aurhwmvo4#
我认为这个问题在于,在一个.ts文件中,如果有一个无关的解析错误,那么所有的类型Assert也会变成解析错误,使得真正的问题难以发现。
omjgkv6w5#
你不需要从.tsx解析中报告任何内容,除非它是成功的。因此,在无效的.ts文件(也不是有效的`.tsx文件)的情况下,行为将保持不变。
envsm3lx6#
如果有一个<div></div>解析错误,同时还有一个无关的错误怎么办?
<div></div>
rsaldnfx7#
你不会收到 tsx 警告,这无疑是次优的。这是一个快速修复,但我同意你的观点,你的初始解决方案更好。
tsx
7条答案
按热度按时间avkwfej41#
我可以试试这个吗?
cgfeq70w2#
当然。这可能是第一个问题,因为当我们不在
.tsx
文件中时,我们将<div>
解析为类型Assert表达式,而不是作为开放标签。因此,它可能需要一些启发式方法来检测可能是JSX开放标签的类型Assert表达式。ztyzrc3y3#
"简单"的方法是在
.ts
解析错误后尝试重新解析为.tsx
,并在文件有效时给出建议作为.tsx
。不确定这会产生什么性能影响。aurhwmvo4#
我认为这个问题在于,在一个
.ts
文件中,如果有一个无关的解析错误,那么所有的类型Assert也会变成解析错误,使得真正的问题难以发现。omjgkv6w5#
你不需要从
.tsx
解析中报告任何内容,除非它是成功的。因此,在无效的.ts
文件(也不是有效的`.tsx文件)的情况下,行为将保持不变。envsm3lx6#
如果有一个
<div></div>
解析错误,同时还有一个无关的错误怎么办?rsaldnfx7#
你不会收到
tsx
警告,这无疑是次优的。这是一个快速修复,但我同意你的观点,你的初始解决方案更好。