2017-02-09 174 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 });