2017-02-09 205 views
0

我该如何摆脱编译时打字错误?Typescript编译时错误

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()) 
     } 
    } 
} 

应用程序/服务/ jsonSchemaValidation.service.ts(8,27):错误TS2339:房产 '默认' 不会对类型“{(选项?:选项)存在:Ajv;新(选项?:选项):Ajv; }”。 npm ERR!测试失败。参见上面的更多细节。

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

这与打字没有关系。由于导入问题,我正在通过调用default来使用Ajv库。有关详情,请参阅my other question

我觉得有一点小窍门,摆脱这种打字稿的编译时间错误不在吗?

+0

您指向任何理由在你的systemjs配置里的'dist/ajv.min.js'文件而不是'lib/ajv.js'?这样做和一个简单的'从'ajv''导入Ajv应该工作。 – Lee

回答

2

.default是ES6兼容,所以你应该做一个纯进口:

import Ajv from "ajv"; 

否则导入为遗产:

import Ajv = require("ajv"); 

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