2017-02-06 3 views
3

저는 기존 TypeScript AngularJS 프로젝트를 진행하고 있습니다. 이제는 d3js를 사용하고 싶습니다. 그렇기 때문에 수동으로 d3js typescript (d3은 백만 개의 파일로 이루어짐)을 다운로드 한 다음 d3js min javascript를 다운로드해야합니다. 법인 프록시는 의존성을 다운로드/관리하는 도구를 사용하지 못하도록하기 때문에 수동 옵션 만 있습니다.TypeScript 프로젝트에서 JavaScript 라이브러리를 호출하는 방법은 무엇입니까?

따라서 에서 d3js를 가져오고 d3 ts 버전을 사용하지 않고 TypeScript에서 직접 d3js를 호출하는 것이 좋습니다.

var svg = d3.select("svg"), 
    margin = {top: 20, right: 20, bottom: 30, left: 40}, 
    width = +svg.attr("width") - margin.left - margin.right, 
    height = +svg.attr("height") - margin.top - margin.bottom, 
    g = svg.append("g").attr("transform", "translate(" + margin.left + "," + margin.top + ")"); 

var x = d3.scaleBand() 
    .rangeRound([0, width]) 
    .paddingInner(0.05) 
    .align(0.1); 

하지만 나는 컴파일러 오류가이 자바 스크립트 객체가 다른 곳에서 정의하고 그것에 대해 아무것도 생각 안된다는 타이프에 알 수있는 방법이 "이름 d3를 찾을 수 없습니다"얻을?

d3 js가 100 만 개로 나뉘어서 유감입니다 ... 그다지 쓸모가 없다는 것을 알았습니다. 을 사용하지 않을 사람은 select입니까? 이것은 나에게 이해가되지 않는다.

+1

이 정보가 도움이 될까요? plunker를 확인하십시오 https://embed.plnkr.co/EUdDLvo9sNrmujhwE9s7/ – MMK

답변

7

정의 파일은 ts 소스를 js로 컴파일하는 데 필요하며 j를 실행하는 데 필요하지 않습니다.

그것은 @types와 함께 사용하기 가장 쉬운 것 :

을 : 당신이 할 수없는 경우

npm install --save @types/d3 

, 다음을 참조 수동으로 정의 파일을 다운로드하여 소스 근처에 배치하고 당신은뿐만 아니라 그렇게 할 수없는 경우

/// <reference path="PATH_TO_D3_D_TS" /> 

다음을 선언

declare const d3: any; 

목 에서 컴파일러에게 변수 d3이 있고 그것의 타입이 any이라서, 예외를 사용해서는 안된다는 것을 알려줄 것입니다.

+0

실제로 세 번째 선택은 내 문제를 해결해 주셔서 감사합니다. 첫 번째 것은 프록시 때문에 불가능할 수 있습니다. 두 번째는 악몽입니다. ​​왜냐하면 "확실히 입력 된"TSD3 파일이 있기 때문에 하나만 확인하지 않기 때문에 불행히도 합리적인 것으로 보이는 세 번째 선택입니다. –

+2

다른 환경 (항상 가정)에서'npm install @ types/d3'을 실행 한 다음'node_modules/@ types/d3' 폴더를 복사 할 수 있습니다. 필자가 언급 한 세 번째 옵션의 문제점은 컴파일러가'd3 '을 사용할 때 도움을 줄 수 없다는 것입니다. –

관련 문제