如何在VSCode中修复“预期表达。ts(1109)”?

时间:2019-05-30 02:48:09

标签: reactjs visual-studio-code jsx

我在打开reactjs文件之一时遇到VSCode错误“预期表达。ts(1009)”。 doif用红色突出显示。 但是我可以在本地开发环境中运行代码,并且编译时也没有问题。我猜这是由于VSCode编辑器错误引起的。

其他编辑器(例如Atom或Sublime Text)也可以。我在React中使用三元运算来解决它,但是如果else if太多,事情就会变得非常复杂。

<div className='form'>
    // Form stuffs
</div>
{
    do{
      if (hasBreakfast) {
        <span>Breakfast Included</span>
      } else if {
        <span>Breakfast Not Included</span>
        }
    }
}

有什么方法可以解决VSCode中的警告?

5 个答案:

答案 0 :(得分:0)

return (
  <Fragment>
  // JSX to render goes here...
  </Fragment>
);

我在最后一行收到了相同的错误。 我添加了fragment元素,以强制return()接收一个父元素。您还可以通过将返回代码包装为'div'元素来实现此目的。但是,这里的问题是您将有随机的空'div'。

文档比我能更好地解释它。 https://reactjs.org/docs/fragments.html

答案 1 :(得分:0)

do 表达式,如在原始问题中使用的,实际上是“有效”的 JSX/JS 语法 if you're using the babel syntax/plugin that supports the do expression proposal。 VS Code 不高兴的原因是因为 TypeScript itself does not support the syntax。如果它无论如何都可以在您的开发环境中运行,请again that's probably Babel

答案 2 :(得分:0)

Import Cost VSCode Extension 我遇到了这个错误,刚刚卸载修复了我的问题。

答案 3 :(得分:-1)

if语句需要一个表达式来断言是否应使用该代码块。

例如:

if (a = true) {
  // do something
} else if (b = true) {
  // do something else
}

如果您只想渲染Breakfast Not Included,则可以只使用else,而不使用if。或者简化一下,可以制作ternary

{
  hasBreakfast ? <span>Breakfast Included</span> : <span>Breakfast Not Included</span>;
}

答案 4 :(得分:-1)

就我而言,我使用三元条件遇到此Expression expected.ts(1109)错误。