我正在使用formvalidation
来自 formvalidation.io 的包,它不是通过 npm 安装的,并且遵循非标准文件结构(source):
formvalidation/
|
├── @types // Consists of TypeScript definition types
| |
| └── formvalidation
| └── global.d.ts // Uses with the global UMD package (dist/js)
| └── index.d.ts // Uses with the ES6 package (dist/es6)
|
├── dist // Consists of generated files from src
| |
| ├── amd // AMD package
| |
│ ├── css // Can be used in browser
│ │ └── formValidation(.min).css
| |
| ├── es6 // Generated from src/js and can be used with ES6 module
│ │ ├── ...
│ │ ├── core
│ │ ├── locales
│ │ ├── plugins
│ │ ├── validators
│ │ └── index.js
| |
│ └── js // Can be used in browser
| |
│ ├── locales // The translation packages
│ │ ├── de_DE(.min).js
│ │ ├── en_US(.min).js
│ │ └── ...
| |
│ ├── plugins
│ │ ├── Bootstrap(.min).js
│ │ ├── Bootstrap3(.min).js
│ │ └── ...
| |
│ ├── FormValidation.full(.min).js
│ └── FormValidation(.min).js
│
└── src // Source files
|
├── css // CSS source files made in SCSS
│ ├── plugins
│ │ ├── _bootstrap.scss
│ │ ├── _bootstrap3.scss
│ │ └── ...
│ │
│ ├── _core.scss
│ └── index.scss
│
└── js // JavaScript source files made in Typescript
├── ...
├── core
├── locales
├── plugins
├── validators
└── index.ts
我试图让它与完整的 TypeScript 支持一起工作,但我遇到了一些问题:
导入(缩小)js 文件,这是目前我发现的最好的方法。我只是import "../../vendor/formvalidation-v1.8.1/dist/js/FormValidation.min"
用来加载已经缩小的版本。我的 IDE 立即获取定义的类型,并且完整的语法完成正在工作。但它比直接导入 ES6 模块要大一些。所以我尝试了:
import formValidation from '../../vendor/formvalidation-v1.8.1/dist/es6/core';
这也适用于较小的更改:我必须更改FormValidation.formValidation()
为formValidation()
. 我怀疑这就是为什么 TS 现在将所有内容都显示为any
-typed 的原因:TS 定义都适用于FormValidation
命名空间。
我也尝试src/*.ts
直接导入文件,但 TS 编译器发现代码中有错误,我根本无法编译(我的tsconfig
似乎比库作者使用的更严格)
是否可以将 ES6 版本的代码与 TypeScript 定义一起使用,或者让编译器对formvalidation-v1.8.1/src
目录中的任何错误关闭?