Тип '(err: any, data: any) => void' не имеет общих свойств с типом 'RequestInit' - PullRequest
0 голосов
/ 05 июня 2018

Я следую этому примеру https://www.mapbox.com/mapbox-gl-js/example/timeline-animation/, чтобы создать визуализацию на основе времени.Я использую эту версию "d3": "^ 5.4.0" Код:

d3.json('http://127.0.0.1:5000', function (err, data) {
        if (err) throw err;

        // Create a month property value based on time
        // used to filter against.
        data.features = data.features.map(function (d) {
          d.properties.month = new Date(d.properties.time).getMonth();
          return d;
        });

        map.addSource('visits', {
          'type': 'geojson',
          'data': data
        });

        map.addLayer({
          'id': 'visits-circles',
          'type': 'circle',
          'source': 'visits',
          'paint': {
            'circle-color': [
              'interpolate',
              ['linear'],
              ['get', 'name'],
              6, '#FCA107',
              8, '#7F3121'
            ],
            'circle-opacity': 0.75,
            'circle-radius': [
              'interpolate',
              ['linear'],
              ['get', 'name'],
              6, 20,
              8, 40
            ]
          }
        });

        map.addLayer({
          'id': 'visits-labels',
          'type': 'symbol',
          'source': 'visits',
          'layout': {
            'text-field': ['concat', ['to-string', ['get', 'name']], 'm'],
            'text-font': ['Open Sans Bold', 'Arial Unicode MS Bold'],
            'text-size': 12
          },
          'paint': {
            'text-color': 'rgba(0,0,0,0.5)'
          }
        });

        // Set filter to first month of the year
        // 0 = January
        filterBy(0);

        document.getElementById('slider').addEventListener('input', function (e) {
          var month = parseInt(e.target.value, 10);
          filterBy(month);
        });

Я делаю то же самое с URL-адресом моих данных, но получаю ошибкуmessages

error TS2559: Тип '(err: any, data: any) => void' не имеет общих свойств с ошибкой типа 'RequestInit' TS2339: Свойство 'value' не существует для типа'EventTarget'.

Кто-нибудь знает, как ее решить?

Ответы [ 2 ]

0 голосов
/ 13 марта 2019

У меня была такая же проблема.Обходной путь использования

(d3 as any)

как в:

(d3 as any).json(options.data, (error, d) => {
0 голосов
/ 05 июня 2018

Информация о типе для d3 предполагает интерфейс, основанный на обещании - возможно, более старые версии использовали обратные вызовы.

Ваш код следует шаблону обратного вызова:

d3.json('http://127.0.0.1:5000', function (err, data) {
    // Handle err

    // Use data
});

Вот версия обещания:

d3.json('http://127.0.0.1:5000')
    .then((data) => {
        // Use data
    })
    .catch((err) => {
        // Handle err
    });

Типизированный ответ

Можно набрать data, который вы получите обратно.Передайте аргумент типа методу json, чтобы сообщить, какие данные вы получите.Например:

interface ResponseData {
  features: any[];
}

d3.json<ResponseData>('http://127.0.0.1:5000')
.then((data) => {
    // Use data
})
.catch((err) => {
    // Handle err
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...