2017-08-21 58 views
9

olarak daktilo d3-hexbin':'d3 ve 'küresel kütüphaneler

/// <reference types="d3" /> 
/// <reference types="d3-hexbin" /> 
:

<script src="https://d3js.org/d3.v4.min.js"></script> 
<script src="https://d3js.org/d3-hexbin.v0.2.min.js"></script> 

... gibi .ts bunları referans

... DefinitelyTyped tanımlarını kullanarak. Bu ...

const svg = d3.select('#hitmap').append('svg') 

: Ancak bu çalışmasına rağmen

const hexbin = d3.hexbin().radius(binsize + 1) 

... Bir başarısız:

Property 'hexbin' does not exist on type 
    'typeof "/Users/bytter/node_modules/@types/d3/index"' 

Düşünceler?

+0

İlgili: https://github.com/Microsoft/TypeScript/issues/7125 –

cevap

0

D3 için yazımınız olsa da, d3-hexbin için türetilmiş bir yazımınız yok. Yani ben d3-bulut için buraya yaptığı gibi declare yönteme geri düşmek ettik: Temelde Typings for d3-cloud

, takip etmek ettik adımlar şunlardır:

  1. import zamanki gibi d3 kütüphanesi import * as D3 from 'd3';: ama bunu bir takma ad vermek (Uyarı: D3 için Sermaye D)

  2. declare sen hexbin için kullanabilirsiniz böylece tekrar D3: declare let d3: any;

  3. Ebeveyn d3 kitaplığı ve tek başına heksbin üretimi için d3 ile ilgili her şey için D3 kullanın.

    const hexbin = d3.hexbin().radius(binsize + 1);

    Bu

    const svg = D3.select('#hitmap').append('svg');

özel öneriler hexbin gösterilmesini editörü önleyecektir ve typescript belirli tip hataları hexbin yakalamak mümkün olmayacaktır. Ama ne yazık ki, resmi yazımlar heksbin için gelene kadar, bu bulduğum en iyi yol.