Typescript找不到敲除验证文件的.d.ts文件...
我在打字稿中使用Knockout和Knockout.validation。基因敲除。验证是基因敲除的扩展。
Knockout.validation可能是更好的模块公民,但现在不是。它创建一个KnockoutValidation对象,并将其分配给全局淘汰对象,以便您通过ko.validation访问它。但是,我认为webpack存在很大的问题,我认为其中不包括淘汰源,因为导入模块后看不到有人在使用该模块。
Knockout.validation的源代码分为不同的文件,然后在npm包中串联在一起。模块定义为here。它似乎是一个UMD模板,但工厂函数不会返回KnockoutValidation对象,它只是将其分配给Knockout的属性。
由于它创建了一个KnockoutValidation对象,因此我认为在工厂函数中同时返回该对象也很容易。
我的目标是能够像这样导入它:
从“ knockout.validation”导入*作为kovalidator
因此,我对工厂函数进行了更改以返回对象。但是我无法使用.d.ts文件。
我在Scripts / Libs / knockout.validation / knockout.validation.js中有我的基因剔除副本
我在Scripts / typings / knockout.validation / knockout.validation.d.ts中有Kunout.validation.d.ts文件
省略接口定义,d.ts文件的导出部分如下:
declare var validation: KnockoutValidationStatic;
declare module "knockout-validation" {
export = validation;
}
在我的调用代码中,我尝试像这样导入它:
import * as validation from "Libs/knockout.validation/knockout.validation"
但是这给了我一个错误,它找不到声明文件。
我可以通过以下方法解决该错误:
import "Libs/knockout.validation/knockout.validation"
但这不会返回工厂方法正在返回的新对象。令我感到困惑的是,声明文件的导出部分与Knockout的声明文件的格式相同,我可以这样做:
import * as ko from "knockout"
我的问题是我必须在声明文件中放置什么才能正确捕获此UMD模块返回可以立即开始使用的类的实例?