TS1128:需要声明或声明(文件结尾)

时间:2019-11-26 18:05:06

标签: reactjs typescript

人。正在处理TypeScript / React项目(只是习惯了它,一年没有写React等),并且遇到了问题。

当我编写此组件时,我遵循了发现的一些文档,但是在该文件末尾出现TS1128(预期的声明或声明)错误,我不知道为什么:

import * as React from 'react';
import Count from './CountDisplay';

interface State {
    count: number;
}

class Counter extends React.Component<{}, State> {

    state: State = {count: 0};

    increment() {
        this.setState({
            count: (this.state.count + 1)
        });
    }

    decrement() {
        this.setState({
            count: (this.state.count - 1)
        });
    }

    render(): JSX.Element {
        return (
            <div>
                <Count count={this.state.count}/>
                <button onClick={this.increment}>Increment</button>
                <button onClick={this.decrement}>Decrement</button>
            </div>
        );
    }
}

export default Counter;

不知道为什么我总是出错,因为代码看起来不错(或者我认为是这样),但是我可能是错的。

下面是我的TSConfig.json,因为我认为这可能与问题有关:

{
  "compilerOptions": {
    "outDir": "./dist",
    "sourceMap": true,
    "noImplicitAny": true,
    "module": "commonjs",
    "target": "es6",
    "jsx": "react"
  }
}

任何帮助将不胜感激,我对此已经一阵子了,有点卡住了。

4 个答案:

答案 0 :(得分:27)

更新11/05/2020:

关闭并重新打开文件也会对其进行修复。看来IntelliJ TypeScript解析可能不同步。

原始答案

我参加聚会可能有点晚了,但是我也经历了这一点,为我解决的是以下步骤。

  1. 创建一个新文件。
  2. 将旧文件的内容复制到新文件。
  3. 删除旧文件。
  4. 重命名新文件以使其与旧文件名匹配。

现在,我不确定为什么能解决此问题,但是我有一些猜测。 我正在使用IntelliJ,因为我从未在其他地方遇到过此问题,因此我假设您也在使用您的东西,即使存在此问题,TS编译也很好。这更多的是编辑错误,至少对我而言。重新打开编辑器也可以解决此问题。

希望这对您有帮助!

猜测1

与行尾有关。当您根据操作系统执行常见的git操作时,Git会更改行尾,因为Windows和Linux具有不同的行尾顺序。这可能会使IntelliJ崩溃。从项目的“ master”撤出后,我曾经遇到过这个问题,因此给我这种印象。


猜测2

您在代码中的某个位置插入了“不可见”的unicode字符。由于定制的MacOS键盘布局,这种情况在我身上发生了几次。 我的两种直觉都围绕着与“不可见”字符有关的事情,但是我担心这就是我的专长所在。也许拥有更多专业知识的人可以发出警报。

答案 1 :(得分:3)

设置>语言和框架>打字稿>打字稿语言服务中取消选中更改时重新编译 解决了该问题,尽管根本原因仍然未知。

答案 2 :(得分:1)

当我在WebStorm 2019.3.1中遇到此问题时,可以通过转到“文件”>“使缓存无效/重新启动...”并按“无效并重新启动”按钮来解决此问题。 WebStorm重新启动时,错误消失了。

答案 3 :(得分:0)

在“设置”>“语言和框架”>“打字稿”中关闭打字稿语言服务。然后重新打开。这为我解决了。