当前位置:  开发笔记 > 编程语言 > 正文

忽略捆绑的.d.ts并使用外部声明

如何解决《忽略捆绑的.d.ts并使用外部声明》经验,为你挑选了1个好方法。

我正在尝试使用validate.js库,该库包含其自己的TypeScript声明文件。

不幸的是,这不是很好的库类型,而DefinitelyTyped中有一个更好的库。我安装了@types/validate.jsNPM软件包,但是TypeScript没有使用它,而是使用了直接与该库捆绑在一起的声明。

有什么方法可以使编译器使用更好的声明?



1> artem..:

您不能validate.js单独使用DefinitelyTyped的声明,因为其中没有单个顶级export-它们只是在ValidateJS名称空间内声明一些接口。

而且,您validate.js至少不能将node(module=commonjs)用作捆绑声明,因为它们使用默认的export而不是export =

因此,您必须提供自己的声明才能validate.js正确导入:

创建文件validate.d.ts

declare var validate: (attributes: any, constraints: any, options?: any) => any;
export = validate;

并告诉打字稿使用它,而不是node_modules使用路径中的一个tsconfig.json

  "compilerOptions": {
    "baseUrl": ".", // This must be specified if "paths" is.
    "paths": {
      "validate.js":  ["./validate.d.ts"]
    }
  }

(请注意,baseUrl如果有paths,则必须具有,"baseUrl" : "."如果尚未将其设置为其他,则应进行设置)

然后,您可以像这样使用它(ValidateJS.Constraints其他人将在您立即可用npm install @types/validate.js):

import validate = require('validate.js');


let constraints: ValidateJS.Constraints = {
    'foo': {presence: true}
};

let e = validate({}, constraints);

console.dir(e);

输出:

{ foo: [ 'Foo can\'t be blank' ] }

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有