Почему «d» не определено в attrTween (d3.js + TypeScript)? - PullRequest
0 голосов
/ 07 января 2020

Я уже спрашивал об этом, но получил совет опубликовать новый вопрос, поскольку не предполагал, что проблема может быть связана с использованием TypeScript.

Итак, я пытаюсь создать интерфейс на d3. Я нашел код анимации ar c (http://bl.ocks.org/mbostock/5100636) и хочу немного его изменить (без функции arcTween ()). Вот часть моего кода (этот код в функции al oop, которая запускается сама):

            var arc3 = d3.arc().innerRadius(77).outerRadius(90).startAngle(0);
            var foregroundArc3 = imgs3
              .append('path')
              .attr('d', arc3)
              .attr('stroke', 'white')
              .attr('fill', 'white')
              .style('fill-opacity', 0.5)
              .attr('transform', 'translate('+(146.5)+','+(150.9)+')')
              .datum({endAngle: 0.0628*90, newAngle: 0.0628*270})
              .transition()
              .duration(1500)
              .attrTween('d',  (d) => {
                return (t) => {
                  const interpolate = d3.interpolate(d.endAngle, d.newAngle);
                    d.endAngle = interpolate(t);
                    return arc3(d);
                  };
          });

Но есть ошибка: Аргумент типа '{endAngle: number; newAng: номер; } 'нельзя назначить параметру типа' DefaultArcObject '. Свойство innerRadius отсутствует в типе {endAngle: number; newAng: номер; } '.

И в консоли браузера "d" не определено. Мне было дано решение: переместить datum до строки .attr('d', arc3). Но если я это сделаю, это не сработает (возникает та же ошибка), так как используется TypeScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...