8

비슷한 문제에 대한 스레드가 많이 있지만 여기까지는 고유하다고 할 수 있습니다.TypeScript와 함께 사용할 JS 라이브러리 선언

내 앱에 jQuery Address 플러그인을 사용하고 있는데이 플러그인을 TypeScript 파일에 사용하고 싶습니다. 라이브러리에는 DefinitelyTyped 스크립트가 없습니다.

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

그리고 나는이 $를 위해 작동하는 것 같다 생각 :

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

가, 내가 jquery.d.ts의 내부 address을 정의하기 위해 시도했다 : 나는 jQuery.address를 사용하려고하면 내가 얻을. 주소(); 그러나 주소의 어떤 방법을 위해 아닙니다. 나는 또한 this thread마다 내 자신의 .dts 파일을 만들려고했으나 여전히 운이 없다. 그리고 .d.ts 파일에 declare을 사용해 보았습니다. 불운.

나는 parameter 방법은 사용할 필요가있는 유일한 방법은 ...

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

어떤 경우에는 내가 얻을 : 나는이 문제를 해결하는 방법에 대한

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

어떤 아이디어?

편집 : 도움이된다면 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

기존 .dts 파일을 편집하여 인터페이스 구성원을 추가하지 마십시오. 인터페이스는 열려 있으며 같은 이름의 다른 인터페이스 블록을 선언하기 만하면 확장 될 수 있습니다. –