将属性添加到JQueryStatic接口

时间:2016-06-10 14:57:36

标签: jquery typescript tsd typescript-typings

我想在class Whatever < ActiveRecord::Base validates :name, presence: true, unless: Proc.new { |a| a.firstname.present? || a.surname.present? } end 界面添加一个属性someString,以便我可以JQueryStatic访问它。

$.someString中,我有以下代码:

index.ts

interface JQueryStatic { someString: string; } $.someString = "string"; 的类型为$,但我收到以下错误:

  

Property&#39; someString&#39;在类型&#39; JQueryStatic&#39;。

上不存在

2 个答案:

答案 0 :(得分:2)

您可以使用扩展jQuery类型声明的环境类型声明,如下所示:

declare interface JQueryStatic {
     someString: string;
}

将其放入代码中某处的.d.ts文件中,并确保其tsconfig.json中包含(或不包括在内)。

为什么这样做?

declare位使这个&#34;环境&#34; - 在&#34;中存在JQueryStatic某个someString成员&#34;。 TypeScript是聪明的,并且认为在其他地方还有另一个JQueryStatic环境声明(在你的情况下是jQuery类型和&#34;合并&#34;它们在一个JQueryStatic接口声明中一起。

enter image description here

答案 1 :(得分:1)

$的现有类型信息位于声明文件中(您可能已下载)。如果您想将新的界面声明合并到现有界面中,请将您的声明放入jquery-extensions.d.ts文件中:

interface JQueryStatic {
    someString: string;
}

如有必要,请在代码顶部添加此新文件的参考路径:

/// <reference path="../path/to/jquery-extensions.d.ts" />