TypeScript版本: 3.2.0-dev.20181004
搜索词:
disableJsDiagnostics
JSX
代码修复
忽略此错误信息
将'@ ts-ignore'添加到所有错误消息
码
// MyComponent.jsx
// @ts-check
import React from "react";
class MyComponent extends React.Component {
render() {
return (
<div>
// @ts-ignore
{doesNotExist}
</div>
);
}
}
export default MyComponent;
运行Ignore this error message
或Add '@ts-ignore' to all error messages
代码修复程序将插入一个满足编译器要求的// @ts-ignore
。
但,
<div>
// @ts-ignore
{doesNotExist}
</div>
实际上将呈现// @ts-ignore
。
预期行为:
看起来像{/* @ts-ignore */}
或{/* // @ts-ignore */}
无法识别为有效的忽略注释。
所以,我能想到的最好的是
<div>
{/*
// @ts-ignore */}
{doesNotExist}
</div>
实际行为:
// MyComponent.jsx
// @ts-check
import React from 'react';
class MyComponent extends React.Component {
render() {
return (
<div>
// @ts-ignore
{doesNotExist}
</div>
);
}
}
export default MyComponent;
// @ts-ignore
错误地呈现的位置。
相关问题:
请注意:除非我们添加新的禁止表格(即,内联),否则唯一的解决方法是在无法产生有效的禁止位置时禁用快速修复。
(除非我们真的认为
{/*
// @ts-ignore */}
可以吗?)
添加新的抑制形式,甚至支持针对特定错误的支持都将非常棒。 但是,如果没有这种方法,我们将使用该怪异注释形式,因为我们需要能够忽略JSX构造中的错误。 这不是很漂亮,但这是唯一可行的方法。 因此,修复程序可能(1)以这种形式包含它,或者(2)根本不包含它(因此它最终不会呈现)。 我喜欢(1),尽管它不是很漂亮,因为它在功能上是正确的-如果该规则可以忽略除JSX组件主体中的错误以外的所有内容,那似乎就不对了。 此外,在模板字符串中有一些看起来奇怪的忽略注释的先例。 例如,
const s = `
Hello ${doesnotexist}`;
被修复忽略为
const s = `
Hello ${
// @ts-ignore
doesnotexist}`;
{/* // @ts-ignore */}
很棒🌹
还有其他人正在使用的模式吗?
这真的是很奇怪的语法
{/*
// @ts-ignore */}
编辑以上内容实际上无效。
今天人们如何忽略TSX
文件中的打字稿错误? 我已经做了很多研究,找不到一个可行的解决方案。 无法忽略某些陈述是一个巨大的挑战。
另一个有效的变种:
<
// @ts-ignore
SomeComponent />
(除非我们真的认为
{/* // @ts-ignore */}
可以吗?)
你有多聪明!
编辑以上内容实际上无效。
今天人们如何忽略
TSX
文件中的打字稿错误? 我已经做了很多研究,找不到一个可行的解决方案。 无法忽略某些陈述是一个巨大的挑战。
适用于.tsx
和Typescript 3.6.2
(除非我们真的认为
{/* // @ts-ignore */}
可以吗?)
是的,所有这些规则规则都会对该语法感到非常满意
现在执行此操作:neutral_face:
< // eslint-disable-line react/jsx-tag-spacing
// @ts-ignore
Component/>
我在TypeScript 3.7中与更漂亮的字体一起玩得更加有趣,因为更漂亮的属性将属性保持在单独的行上,现在@ ts-ignore必须紧靠属性之前,而不是标签的开头。
这是我的解决方法:
{/* lol https://github.com/Microsoft/TypeScript/issues/27552#issuecomment-495830020
// @ts-ignore */ /* prettier-ignore */}
<MyComponent foo={{
a: 'prop',
with: 'lots a',
big: 'object',
that: 'forces',
prettier: 'to wrap',
}}
/>
先前:
{/* lol https://github.com/Microsoft/TypeScript/issues/27552#issuecomment-495830020
// @ts-ignore */}
<MyComponent
foo={{
a: 'prop',
with: 'lots a',
big: 'object',
that: 'forces',
prettier: 'to wrap',
}}
/>
不知道更漂亮是否还会抱怨点差过大,但是
<MyComponent
{...{}/* lol https://github.com/Microsoft/TypeScript/issues/27552#issuecomment-495830020
// @ts-ignore */}
foo={{
a: 'prop',
with: 'lots a',
big: 'object',
that: 'forces',
prettier: 'to wrap',
}}
/>
还应该工作吗? 在某些时候,更漂亮的忽略只是更好的选择。 在jsx中,注释位置的选择并不多。
为什么关闭? 我们只是致力于丑陋的解决方案吗?
请重新打开...
我们只是致力于丑陋的解决方案吗?
是的 quickfix现在可以做丑事了。 压制从本质上讲应该是例外事件,因此“礼节性”并不是问题。 jsx语法允许我们完全锁定,所以确实如此。
我们绝对致力于这个笨拙的解决方案……但也许不是。
我们可以投票/同意保持开放吗? 我希望在空闲时间解决此问题,但是如果当前的解决方案是首选,则不想浪费时间。
同意我目前使用的是笨拙的解决方案,因为我所依赖的第3方库在其最新代码中键入错误。 笨拙的解决方案目前可以使用,但如果可能的话,最好有一个衬套。
可悲的是,没有其他方法可以在jsx中获得评论。 它必须在{}
。
是否有单独的问题来跟踪这种可能性?
{/* @ts-ignore */}
{whatever}
我个人认为
{/* @ts-ignore */}
{whatever}
是最好,最通用的解决方案。
自动格式化工具(更漂亮的等)可能会被黑客破解。
注意:
这个解决方案工作正常
{/*
// @ts-ignore */}
而这
<
// @ts-ignore
SomeComponent />
已自动格式化,并且无效(至少在我的漂亮设置上)
基于#38228的成功,我认为它落在3.9中:tada:
我想这更多是JSX的问题,但请查看以下内容:
假设我有这个:
import * as React from 'react';
declare var SomeComponentFromLibrary: React.FC<{
children?: React.ReactElement
}>;
declare var MyComponent: React.FC<{
foo: string,
}>;
export default () => (
<SomeComponentFromLibrary>
{/* @ts-expect-error */}
<MyComponent />
</SomeComponentFromLibrary>
)
SomeComponentFromLibrary
我无法更改,我希望抑制<MyComponent />
生成的错误。
但是,现在在SomeComponentFromLibrary
的子级中添加另一个元素会破坏children?: React.ReactElement
类型约束,从而产生另一个类型错误。
是否可以在JSX中创建未转换为代码的注释?
最有用的评论
(除非我们真的认为
可以吗?)