2017-02-23 9 views
2

차트를 만들기 위해 d3 sankey 플러그인을 사용하는 몇 가지 자바 스크립트 코드가 있습니다. 새 프로젝트에서는 동일한 코드를 다시 사용해야하지만 새 프로젝트는 타이프 스크립트로되어 있습니다. 나는 플러그인을위한 DefinitelyTyped 파일을 찾고있다. https://github.com/DefinitelyTyped/DefinitelyTyped을 탐색했지만 찾지 못했습니다.d3 sankey에 대한 Typescript 유형 정의

이 파일을 가져올 수있는 다른 위치가 있습니까?

Sankey 플러그인 링크 :이 플러그인에 대한 d.ts 파일이없는 https://github.com/d3/d3-sankey 또한

, 타이프 라이터를 통해 액세스 할 수있는 방법이?

는 는

D3 플러그인의 코드는 다음과 같이 보입니다 :

d3.sankey = 함수() {

코드의

// 나머지가 간다 을

}

방법 I 자바 스크립트에서 사용하는 것은 다음과 같습니다 :

d3.sankey(). nodeWidth (30) .size ([100,100]);

도움이나 조언을 부탁드립니다.

감사합니다.

답변

0

sankey() 메서드 및 허용되는 메서드를 포함하도록 d3 형식의 정의를 확장해야합니다.

d3 모듈을 선언 파일로 확장하여 d3d3-sankey 모듈로 확장되었는지 확인해야합니다. 당신은 다음과 같은 내용으로 직접 @types 내에 배치 정의 파일을 작성하여이를 :

declare module 'd3' { 
    export function sankey(...args[]) : any; 
} 

이 이야기는 d3 모듈이 있음을, 그리고 나열된 기능을 내보내는 것을 TS. d3 모듈이 이미 있으면 해당 모듈을 확장합니다.

그래서 당신은 다음을 d3 서비스를 가져 와서 사용할 수 있습니다

declare module 'd3' { 
    interface ISankey { 
     nodeWidth() : number; 
     nodeWidth(width : number|{(arg: number) : number}) : void; 
     // Add Other d3.sankey Methods Here 
    } 
    export function sankey() : ISankey;  
} 
+0

선언을 사용하여 파일을 만들려고했는데 d3, jquery 등의 다른 정의 파일과 함께 @types 디렉토리에 배치했습니다. 그러나 내 응용 프로그램이 정의를로드 할 수없는 것 같습니다. 즉 sankey() 함수를 찾을 수 없습니다. d3의 index.d.ts 파일도 업데이트해야합니까? 이것들은 외부 파일이므로 sankey.js를 업데이트하고 싶지 않습니다. 또한 다른 형식 정의 폴더에 index.d.ts, package.json 및 types-metadata.json이 있다는 것을 알았습니다. 비슷한 구조가 필요한가요? – AgentHunt

+0

아니오; npm 모듈로 전달되기 때문에 다른 파일 ('index.d.ts','package.json' 등)이 존재합니다. d3을 가져올 때 어떻게합니까? 나는'import d3 = require ('d3');을 수행하면 해결되지는 않지만 가져온 변수를'dd3'으로 변경하면 문제가 없다는 것을 알았습니다. –

+0

내가 지정한 방법으로 가져 왔습니다 (dd3). 파일 이름을 중요하게 생각합니까? 나는 index.d.ts/sankey.d.ts를 시도했다. 파일 배치가 중요한지 확실하지 않습니다. @types 폴더의 루트와 @types \ d3 폴더 아래에 배치했습니다. 파일 이름이 'd.ts'로 끝나는 한로드해야합니다. 또한 sankey.js는 html에서 참조해야합니다. 옳은? – AgentHunt

2

로 : 당신이 종류의 파일을 확장하려면, 대신 그래서 정의 파일을 작성

import dd3 = require('d3'); 
dd3.sankey(); 

헤즈 업을 위해 d3-sankey에 대한 TS 정의가 포함 된에 Pull Request #16051으로 정확하게 제출했습니다.

병합되면 표준 프로세스에 따라 npm/@ 유형에 게시됩니다. 나는. npm install --save-dev @types/d3-sankey을 사용합니다.

중요 : 나는 그들을 쓴 때, 나는 D3-sankey REPO에서 현재 API 문서 (예, 방법을 누락 사용되지 않는 접근 기능의 언급 정류의 일부를 필요로 할 것으로 보인다 것으로 나타났습니다 코드베이스)

내가 잠시 후에 거기에 문제를 제기하거나 PR을 제출할 것입니다.

UPDATE (2017년 5월 1일) : D3-sankey에 대한

"공식적인"타이프 라이터의 정의는 사용할 수 (npm @types/d3-sankey 참조)이다. 위에 표시된대로 npm과 함께 사용하십시오.

소스 코드를 반영하도록 d3-sankey의 실제 API 문서를 업데이트하는 PR은 여전히 ​​병합 here을 기다리고 있습니다.

+0

후속 조치로 API 문서 [https://github.com/d3/d3-sankey/issues/22]를 열었습니다. – tomwanzek