Je cherche sur google et j'ai réussi à étendre la sélection d3js avec le code ts suivant :
import * as d3 from "d3";
d3.selection.prototype.popover = function() {};
Et ensuite l'utiliser à partir d'un autre fichier ts comme :
(d3.select("svg").selectAll(".node") as any).popover();
Cela fonctionne, mais je n'aime pas " any
"et que vous souhaitez étendre le @types/d3
définition (j'ai déjà installé @types/d3). Je crée un fichier d3.extend.d.ts le long du code de la fonction ts, et j'écris :
/// <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();
}
}
Mais cela ne semble pas fonctionner, si j'enlève any
du code d'appel, le compilateur obtiendra une erreur.
Mis à jour : J'ai mis à jour mon code basé sur la réponse pour qu'il soit la version finale du travail.