Я ищу в Google и успешно расширяю выбор d3js с помощью следующего кода TS:
import * as d3 from "d3";
d3.selection.prototype.popover = function() {};
И затем использую его из другого файла TS, например:
(d3.select("svg").selectAll(".node") as any).popover();
Это работает, но мне здесь не нравится "any
", и я хочу расширить определение @types/d3
(я уже установил install @ types / d3).Я создаю d3.extend.d.ts вдоль файла кода функции ts и пишу:
/// <referencepath="../../node_modules/@types/d3-selection/index.d.ts">
declare module "d3-selection"{
export interface Selection<GElement extends BaseType, Datum, PElement extends BaseType, PDatum>{
popover();
}
}
Но это, кажется, не работает, если я удаляю any
из вызывающего кода, компилятор tsполучит ошибку.
Обновлено: я обновил свой код на основе ответа, чтобы сделать его окончательной рабочей версией