我正在尝试使用Ajv(我正在使用打字稿).
import { Ajv } from "ajv"; let ajv = new Ajv({allErrors: true});
只是想知道它为什么会出现这个错误:
[ts]'Ajv'只引用一个类型,但在这里被用作值.
我使用它和文档一样:
var Ajv = require('ajv'); var ajv = new Ajv(); // options can be passed, e.g. {allErrors: true} var validate = ajv.compile(schema); var valid = validate(data); if (!valid) console.log(validate.errors);
但我使用import而不是require,所以我没有设置变量,所以我猜这是导致错误.使用时如何定义变量用于import
代替require
?
所有代码:
import { Injectable } from "@angular/core"; import { Http, Headers, Response } from "@angular/http"; import { Configuration } from "../shared/configuration.model"; import { Observable } from "rxjs/Rx"; import { Ajv } from "ajv"; @Injectable() export class ValidateJSONSchemaService { constructor(private http: Http) { } public valJson(json, schemaFile: string) { return new Promise((resolve, reject) => { this.http.get(schemaFile) .toPromise() .then(fileContents => fileContents.json()) .then((schema) => { let ajv = new Ajv({allErrors: true}); ajv.validate(schema, json) ? resolve() : reject(new Error("JSON does not conform to schema: " + ajv.errorsText())); }, err => reject( new Error("Unable to get schema file contents:" + err)) ); }); }; }
Devin Prejea.. 11
正如@elclanrs所说,使用 import * as Ajv from 'ajv'
不试图获得信任,但这已经过了一年,我几乎错过了答案,因为没有任何标记为答案.
正如@elclanrs所说,使用 import * as Ajv from 'ajv'
不试图获得信任,但这已经过了一年,我几乎错过了答案,因为没有任何标记为答案.