【问题标题】:Typescript compile time error打字稿编译时错误
【发布时间】:2017-06-26 20:47:53
【问题描述】:

如何摆脱这个编译时打字稿错误?

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: 类型 '{ (options?: Options): Ajv;新(选项?:选项):Ajv; }'。 npm 错误!测试失败。有关详细信息,请参见上文。

javascript 代码运行没有错误,但 typescript 报错,它阻止了我运行单元测试。

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

我认为有一些小技巧可以摆脱这个打字稿编译时错误,不是吗?

【问题讨论】:

  • 您指向 systemjs 配置中的 dist/ajv.min.js 文件而不是 lib/ajv.js 的任何原因?这样做和一个简单的import Ajv from 'ajv' 应该可以工作。

标签: javascript angular typescript ajv


【解决方案1】:

.default 符合 ES6,所以你应该做一个简单的导入:

import Ajv from "ajv";

否则作为旧版导入:

import Ajv = require("ajv");

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

【讨论】:

    猜你喜欢
    • 2016-08-21
    • 1970-01-01
    • 2016-09-09
    • 1970-01-01
    • 2018-07-03
    • 2013-02-21
    • 2018-02-18
    • 1970-01-01
    • 2018-04-20
    相关资源
    最近更新 更多