2016-10-26 4 views
-2

jQuery를 가져 오지 않는다고 가정하면 컴파일러에서 아래 프로그램의 $을 해결하는 이유는 무엇입니까? 다음과 같이TypeScript : jQuery 예기치 않은 가져 오기

function f() { 
    $('#loadFiles').click() // ok 
    $$('#loadFiles').click() // error, can't find name '$$' 
} 

나는 컴파일러 (v2.0.3)를 실행 해요 : Test.ts는 위의 텍스트가 포함

  • tsc Test.ts;
  • tsconfig.json 또는 typings.json 포함 폴더에 없습니다.

나는이 일반적 jQuery를 같은 라이브러리에서 사용되는 관용구와 관련 될 수 있음을 얻을 수 있지만, 나는 (내가 아는까지로) jQuery를 가져 하지 해요 있습니다. 그러나 어떤 이유로 컴파일러는 '$'를 불평하지 않고 받아들입니다.

누구나이 동작을 재현하거나 의도하지 않게 '$'의 정의를 가져올 수 있습니까?

+1

'$'와'$$ '는 완전히 다른 식별자입니다. jQuery는'$$'에 자신을 할당하지 않으며, 다른 어떤 라이브러리가 제공하지 않는 한 그것을 사용하면 일반적으로 작동하지 않을 것이다. – ssube

+0

실제로 그것은 '$'와 '$$'를 대조하는 요점이었습니다. 제 질문은 '$'의 특별한 대우에 관한 것이지 '$$'에 대한 특별한 대우의 부족이 아닙니다. 그에 따라 명확 해졌다. – Roly

+1

오, 내 실수. tsconfig에 입력 또는 정의 파일이 있습니까? tsconfig를 게시하는 것이 일반적으로 좋은 아이디어 일 수 있습니다. – ssube

답변

0

첫째, 내가 Test.ts 만 코드가 포함되어

tsc --traceResolution Test.ts 

export function f() { 
    $('#loadFiles').click() // ok 
} 

('수출'모듈을 강제로 추가), tsconfig.json가 실행 [응답 내 자신의 질문] 비어 있고 typings이 설치되어 있지 않으면 내 노드 설치시 다음을 보여줍니다.

======== Type reference directive 'jquery' was successfully resolved to '/home/rolyp/Repo/concurrent-objects/node_modules/@types/jquery/index.d.ts', primary: true. ======== 

내가 설치 한 @types packages과 정확히 일치하는 다른 여러 가지 "유형 참조 지시문"도 해결되었습니다. 따라서 문제는 @types 패키지를 설치하면 특정 정의를 가져올 필요없이 전체적으로 사용할 수 있다는 것입니다.

이것은 패키지의 암시 적 사용에 대해 알지 못하는 Webpack과 상호 작용하지 않지만 현재의 상황 인 것으로 보입니다.

+0

근본적인 문제를 해결하기에 충분한 정보가 귀하의 질문에 없기 때문에 귀하는 제 답변 (사실적으로 정확한 답변)을 downvoted하셨습니까? –

-1

TypeScript에는 $의 특수 처리가 없습니다.

물론 $ 변수에 대한 선언을 포함했지만 $$ 변수에 대한 선언을 포함하면 변수가 다르게 동작합니다. 당신이 기대할 수있는 것이 무엇인지 모릅니다.

+0

좋아, 이거 이상해. 위의 텍스트만을 포함하는 파일에서'tsc Test.ts'를 실행 중이며 그 폴더에'tsconfig.json'도 없습니다. – Roly

+0

질문에 대한 자세한 내용을 추가했습니다. 내가 뻔한 것을 놓치고있는 것 같아 보이지만 나는 그것을 볼 수 없다. – Roly

+0

'tsc'는'--traceResolution'을 지원합니다.'--traceResolution'은'@ types' 설치에서 jQuery가 선택되었음을 보여줍니다. 이제 왜 그것이 '$'를 어디서나 가져올 필요없이 범위로 가져 오는 이유를 찾으십시오. – Roly

관련 문제