如何在打字稿中扩展d3界面?

时间:2018-04-16 13:35:40

标签: typescript d3.js

nodeEnter.append('text')
        .attr("dy", ".35em")
        .attr("text-anchor", function (d) {
            return d.children || d._children ? "end" : "start";
        })
        .text(function (d) { return d.data.name; });

在打字稿中,我收到此错误:

TS2551:“HierarchyPointNode< {}>”类型中不存在属性“_children”。你的意思是'孩子'吗?

我该如何处理这个错误

这是我的尝试:

import { HierarchyPointNode } from "d3";
declare interface HierarchyPointNode<Datum> {
   _children: any;
}

流程更新:

我使用d3的方式是html中的导入脚本文件

<script src="../bower_components/d3/d3.min.js"></script>

然后我运行npm install @types/d3

在我的global.d.ts文件中,我写了这个:

/// <reference types="d3" />
import { HierarchyPointNode } from 'd3';

declare module 'd3' {
    export interface HierarchyPointNode<Datum> {
        _children: any;
    }
}

但它无法帮助

1 个答案:

答案 0 :(得分:2)

您需要在与其相同的模块中声明接口:

import { HierarchyPointNode } from 'd3';

declare module 'd3' {
    export interface HierarchyPointNode<Datum> {
        _children: any;
    }
}

现在,无论您直接导入此文件(如果您调用它d3-extensions.ts,您都必须像这样导入:import "d3-extensions")您将能够使用扩展接口。

希望这有帮助