Javascript 类型脚本编译时错误

Javascript 类型脚本编译时错误,javascript,angular,typescript,ajv,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

如何消除这个编译时类型脚本错误

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;新(选项?:选项):Ajv;}”上不存在属性“default”。 npm错误!测试失败。请参见上文了解更多详细信息

javascript代码运行时没有错误,但typescript发出了抱怨,它阻止了我运行单元测试

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


我认为有一些小技巧可以消除这个typescript编译时错误,不是吗

。默认值
与ES6兼容,因此您应该执行普通导入:

import Ajv from "ajv";
否则,将导入为遗留:

import Ajv = require("ajv");

然后直接使用它:
newajv({allErrors:true})

。默认情况下
与ES6兼容,因此您应该执行普通导入:

import Ajv from "ajv";
否则,将导入为遗留:

import Ajv = require("ajv");

然后直接使用它:
newajv({allErrors:true})

您指向systemjs配置中的
dist/ajv.min.js
文件而不是
lib/ajv.js
的原因是什么?这样做,一个简单的
从“Ajv”导入Ajv
就可以了。你为什么要指向systemjs配置中的
dist/Ajv.min.js
文件而不是
lib/Ajv.js
?这样做,一个简单的
从“Ajv”导入Ajv
就可以了。