[jquery] Typescript를 사용할 때 “property does not exist on type JQuery”구문 오류를 어떻게 막을 수 있습니까?

내 응용 프로그램에서 한 줄의 jQuery 만 사용하고 있습니다.

$("div.printArea").printArea();

그러나 이것은 나에게 Typescript 오류를 제공합니다.

속성 ‘printArea’가 JQuery 유형에 존재하지 않습니까?

누군가가이 오류가 나타나는 것을 막을 수있는 방법을 말해 줄 수 있습니까?



답변

<any>자신의 메소드를 추가하기 위해 jquery 타이핑을 캐스트 하거나 확장 할 수 있습니다.

 (<any>$("div.printArea")).printArea();

// 또는 사용자 지정 메서드를 추가합니다 (사용자 지정 플러그인의 일부로 직접 추가되었다고 가정).

interface JQuery {
    printArea():void;
}


답변

나는 이것이 가장 읽기 쉬운 해결책이라고 생각합니다.

($("div.printArea") as any).printArea();


답변

캐스트 할 수 있습니다.

(<any>$('.selector') ).function();

예 : jquery를 사용하여 날짜 선택기 초기화

(<any>$('.datepicker') ).datepicker();


답변

예를 들어 다음을 추가합니다.

interface JQuery{
    printArea():void;
}

편집 : 죄송합니다, basarat은 아래에 정확합니다. 왜 컴파일한다고 생각했는지 모르겠지만이 답변을 업데이트했습니다.


답변

printArea는 jQuery 플러그인이므로 jquery.d.ts에 포함되지 않습니다.

jquery.printArea.ts 정의 파일을 생성해야합니다.

플러그인에 대한 완전한 정의 파일을 만들면 DefinitelyTyped 에 제출할 수 있습니다 .


답변

다음과 같이 작성할 수도 있습니다.

let elem: any;
elem = $("div.printArea");
elem.printArea();


답변

표기법을 사용하는 대신에 무시 구문을 사용할 수도 있습니다.

// @ts-ignore
$("div.printArea").printArea();