0

如何摆脱这个编译时打字稿错误?

import * as Ajv from "ajv";

export class ValidateJsonService {
    validateJson(json, schema) {
        let ajv = new Ajv.default({ allErrors: true });
        if (!ajv.validate(schema, json)) {
            throw new Error("JSON does not conform to schema: " + ajv.errorsText())
        }
    }
}

app/services/jsonSchemaValidation.service.ts(8,27): 错误 TS2339: 类型 '{ (options?: Options): Ajv; 新(选项?:选项):Ajv;}'。npm 错误!测试失败。有关更多详细信息,请参见上文。

javascript代码运行没有错误,但打字稿抱怨,它阻止我能够运行我的单元测试。

这与打字无关。default由于导入问题,我通过调用来使用 Ajv 库。有关原因的详细信息,请参阅我的另一个问题

我认为有一些小技巧可以摆脱这个打字稿编译时错误,不是吗?

4

1 回答 1

3

.default是 ES6 兼容的,所以你应该做一个简单的导入:

import Ajv from "ajv";

否则导入为 legacy :

import Ajv = require("ajv");

然后直接使用:new Ajv({ allErrors: true });

于 2017-02-09T03:54:57.327 回答