首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jquery.unobtrusive-ajax.d.ts / jquery.validate.unobtrusive.d.ts有人吗?

jquery.unobtrusive-ajax.d.ts / jquery.validate.unobtrusive.d.ts有人吗?
EN

Stack Overflow用户
提问于 2013-03-02 07:39:25
回答 3查看 2.2K关注 0票数 4

我正在尝试将我的app.js转换成app.ts,唯一缺少的是一个用于jquery.unobtrusive-ajax.js和/或jquery.validate.unobtrusive.js的.d文件。

当我使用tsc构建和编译时,它工作得很好,但VS2012中的WebEssentials抱怨道:

代码语言:javascript
复制
var $form = $('#myform');
$.validator.unobtrusive.parse($form); 

错误:

代码语言:javascript
复制
The property 'unobtrusive' does not exist on value of type 'Validator'

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-02 18:04:05

如果您没有类型信息,并且编译器无法推断类型,那么就会出现问题。

尽管您从命令行获得了输出,但我仍然希望它会给出一个错误。Web Essentials更强地强制执行,这是工具背后的想法。

如果你不能得到类型信息(勾选在GitHub上明确键入),你可以使用一个简化的定义来修复这个错误...

代码语言:javascript
复制
interface JQueryStatic {
    validator: any;
}

如果你有一个验证器的定义,你可以使用这个技巧来声明对它的无关紧要,它将只有缺少的类型信息,而不是所有的验证器。

这将丢失验证器上的输入,但会修复错误。

摘自http://www.stevefenton.co.uk/Content/Blog/Date/201301/Blog/Complex-TypeScript-Definitions-Made-Easy/

票数 4
EN

Stack Overflow用户

发布于 2013-03-04 17:55:22

只是为了说明一下我想史蒂夫已经说过的话,如果你用download the d.ts from DefinitelyTyped打开文件,你会看到Validator界面(还有其他定义)。扩展它很简单:

代码语言:javascript
复制
interface Validator {
    format(template: string, ...arguments: string[]): string;
    form(): bool;
    element(element: any): bool;
    resetForm(): void;
    showErrors(errors: any): void;
    numberOfInvalids(): number;
    setDefaults(defaults: ValidationOptions): void;
    addMethod(name: string, method: (value: any, element: any, ...params: any[]) => any, message?: any): void;
    addClassRules(rules: any): void;
    addClassRules(name: string, rules: any): void;

    // Just add the unobtrusive element to this (typed as `any` if you don't have time to do anything more)
    unobtrusive:any; 
}

扩展JQueryJQueryStatic接口的其余工作已经在文件中的其他位置为您完成了。您不会在unobtrusive元素上获得任何类型上的好处,但至少所有剩余的Validator代码都将进行类型检查。

票数 4
EN

Stack Overflow用户

发布于 2013-03-03 14:33:12

我解决这个问题的方法是将其转换为:

代码语言:javascript
复制
(<any>$.validator).unobtrusive.parse($form);

我确实喜欢typescript,但由于缺乏定义文件,它的使用受到了阻碍。我想这是一件小事-- tsc运行得很好--但如果Visual Studio要抱怨像这样简单的事情,那么对很多人来说,这将是一个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15168738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档