打字稿编译时错误

时间:2017-02-09 01:17:55

标签: javascript angular typescript ajv

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

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:属性'默认'类型' {(选项?:选项)上不存在:Ajv; new(选项?:选项):Ajv; }&#39 ;.   错误的ERR!测试失败。有关详细信息,请参见上文。

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

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

我认为有一些小黑客可以摆脱这个打字稿编译时错误不存在吗?

1 个答案:

答案 0 :(得分:3)

.default符合ES6标准,因此您应该进行简单导入:

import Ajv from "ajv";

否则导入为遗产:

import Ajv = require("ajv");

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