8

似たような問題のスレッドがたくさんありますが、これは一意であることがわかります。TypeScriptで使用するJSライブラリを宣言する

私のアプリではjQuery Addressプラグインを使用しており、これをTypeScriptファイルで使用したいと考えています。残念ながら、ライブラリにはDefinitelyTypedスクリプトはありません。私はjQuery.addressを使用しようとすると、私が手:

interface JQueryStatic { 
    address(options): any; 
    ... 
} 

をそして私は、これは$のために働くようだと思う:this threadパー

The property 'address' does not exist on value of type 'jQueryStatic' 

を、私はjquery.d.tsの内側addressを定義しようとしました。住所();いずれのアドレスのメソッドにも適用されません。私はthis threadごとに独自の.d.tsファイルを作成しようとしましたが、まだ運がありません。 .d.tsファイルにdeclareを使ってみました。運がない。私はこれを解決する方法の

The property 'parameter' does not exist on value of type 'address' 

任意のアイデア:

私が使用する必要がある唯一の方法は、私が手

$.address.parameter('param', 1); 

その場合parameter方法...ですか?

編集:私はVisual Studio C#.NET環境で作業しています。

答えて

11

jquery.d.ts自体を編集する必要はありません。これらの定義を独自のファイルに入れて、適切に保守することができます。最小限のものは次のようなものです:

// For methods on e.g. $('a') 
interface JQuery { 
    address(callback?:() => void): JQuery; 
} 

// For methods on $ 
interface JQueryStatic { 
    address: JQueryAddressStatic; 
} 

interface JQueryAddressStatic { 
    (): JQuery; 
    parameter(name: string): string; 
    parameter(name: string, value: string, append?: boolean): JQuery; 
} 
+0

はい!それがそれでした。新しいファイルを作成する方がはるかに優れています。どうもありがとう! – dmathisen

3

を以下jquery.d.ts内部に入る:

interface JQueryStatic { 
    address(options): JQueryAddress; 
} 

interface JQueryAddress { 
    parameter(name, value): any; 
} 

役に立てば幸い!

+0

ありがとうございます。それは 'アドレス'問題を解決しましたが、私はまだ "プロパティ 'パラメータ'が 'アドレス'型の値に存在しません。"したがって、$ .address()は機能しますが、$ .address.parameter()は機能しません。 – dmathisen

+2

既存の.d.tsファイルを編集してインタフェースメンバを追加しないでください。インタフェースは開いており、同じ名前の別のインタフェースブロックを宣言するだけで拡張できます。 –

関連する問題