2017-02-09 18 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コードはエラーなく実行されますが、typescriptは文句を言うので、私の単体テストを実行できなくなります。

タイピングとは関係ありません。私は、インポートの問題のためにdefaultを呼び出してAjvライブラリを使用しています。理由の詳細については、my other questionを参照してください。

私はこのタイスクリプトを取り除くためにいくつかの小さなハックがあると思いますが、コンパイル時エラーはありませんか?あなたはプレーンなインポートを行う必要がありますので

+0

あなたが指している任意の理由を'lib/ajv.js'ではなくあなたのsystemjs設定の' dist/ajv.min.js'ファイルにありますか?これを行うと、単純な 'ajv 'からのimport Ajvが動作するはずです。 – Lee

答えて

2

.defaultは、ES6準拠しています。

import Ajv from "ajv"; 

そうでない場合はレガシーとしてインポート:

import Ajv = require("ajv"); 

そして、それを直接使用:new Ajv({ allErrors: true });

関連する問題