0

我的项目是一个使用 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)
4

1 回答 1

0

我使用以下更改的文件解决了该问题:

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

我不确定为什么更改abstractandasync关键字的顺序很重要,但现在问题已解决。

于 2019-06-29T01:51:38.890 回答