SyntaxError в проекте React Typescript, но нет ошибок компилятора в IDE - PullRequest
0 голосов
/ 29 июня 2019

Мой проект - это приложение для Chrome OS, созданное с использованием Typescript и create-react-aoo.

Ниже приведен обидный файл машинописи:

import Keys from "./Keys";
import Volume from "./Volume"
import Block from './Block'
import EventHandler from "../utility/EventHandler"

abstract class ChromeVolume implements Volume {
    readonly error: EventHandler<Volume, Error> = new EventHandler<Volume, Error>(this);

    async abstract load<T extends Keys>(keys: T): Promise<Block>

    async abstract save<T extends object>(items: T): Promise<void>

    async abstract clear(): Promise<void>
}

export default ChromeVolume

При попытке запустить Jest-тесты с использованием react-scripts test появляется следующая ошибка:

Test suite failed to run

    SyntaxError: ...\ChromeVolume.ts: Unexpected token, expected "(" (12:19)

      10 |     readonly error: EventHandler<Volume, Error> = new EventHandler<Volume, Error>(this);
      11 | 
    > 12 |     async abstract load<T extends Keys>(keys: T): Promise<Block>
         |                    ^
      13 | 
      14 |     async abstract save<T extends object>(items: T): Promise<void>
      15 | 

      at Object.raise (node_modules/@babel/parser/lib/index.js:6322:17)
      at Object.unexpected (node_modules/@babel/parser/lib/index.js:7638:16)
      at Object.expect (node_modules/@babel/parser/lib/index.js:7624:28)
      at Object.parseFunctionParams (node_modules/@babel/parser/lib/index.js:10495:10)
      at Object.parseFunctionParams (node_modules/@babel/parser/lib/index.js:5570:11)
      at Object.parseMethod (node_modules/@babel/parser/lib/index.js:9304:10)
      at Object.pushClassMethod (node_modules/@babel/parser/lib/index.js:10743:30)
      at Object.pushClassMethod (node_modules/@babel/parser/lib/index.js:5540:11)
      at Object.parseClassMemberWithIsStatic (node_modules/@babel/parser/lib/index.js:10687:14)
      at Object.parseClassMemberWithIsStatic (node_modules/@babel/parser/lib/index.js:5440:11)

1 Ответ

0 голосов
/ 29 июня 2019

Я решил проблему, используя следующий измененный файл:

import Keys from "./Keys";
import Volume from "./Volume"
import Block from './Block'
import EventHandler from "../utility/EventHandler"

abstract class ChromeVolume implements Volume {
    readonly error: EventHandler<Volume, Error> = new EventHandler<Volume, Error>(this);

    abstract async load<T extends Keys>(keys: T): Promise<Block>

    abstract async save<T extends object>(items: T): Promise<void>

    abstract async clear(): Promise<void>
}

export default ChromeVolume

Я не уверен, почему изменение порядка ключевых слов abstract и async имело значение, но проблема теперь решена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...