borisyankov/DefinitelyTypedで定義されているD3.Layout.GraphNodeとの定義を次に示します。D3.Layout.GraphLink
export interface GraphNode {
        id: number;
        index: number;
        name: string;
        px: number;
        py: number;
        size: number;
        weight: number;
        x: number;
        y: number;
        subindex: number;
        startAngle: number;
        endAngle: number;
        value: number;
        fixed: bool;
        children: GraphNode[];
        _children: GraphNode[];
        parent: GraphNode;
        depth: number;
    }
    export interface GraphLink {
        source: GraphNode;
        target: GraphNode;
    }
ただし、GraphNode常にこれらのプロパティをすべて持つ必要はありません。たとえば、ここに aGraphLinkと asource:GraphNodeがありtarget:GraphNodeますが、どちらもすべてのプロパティを持っているわけではありません。  

さらに、次のようなクラスを持つことはできません。
class GraphData {
    nodes: D3.Layout.GraphNode[];
    links: D3.Layout.GraphLink[];
}
これを行うとうまくいかないため:
var data:GraphData = {
    "nodes": [{
        "group": 0,
        "id": 0
    }, {
        "group": 0,
        "id": 1
    }, {
        "group": 0,
        "id": 2
    }],
    "links": [{
        "source": 0,
        "target": 2,
        "value": 1
    }, {
        "source": 0,
        "target": 0,
        "value": 1
    }, {
        "source": 2,
        "target": 1,
        "value": 1
    }, {
        "source": 2,
        "target": 1,
        "value": 1
    }]
}
タイプスクリプトコンパイラは私にこのエラーを与えます:
Compile Error. 
See error list for details
 C:/Projects/MyGraph/app.ts(111,23): error TS2082: Supplied parameters do not match any signature of call target:
Types of property 'nodes' of types '{ "nodes": { "group": number; "id": number; }[]; "links": { "source": number; "target": number; "value": number; }[]; }' and 'GraphData' are incompatible:
Type '{ "group": number; "id": number; }' is missing property 'index' from type 'D3.Layout.GraphNode'.
これを修正する方法は、インターフェイスのすべてのフィールドをGraphNodeオプションにすることです。しかし、インターフェースは役に立たない。この場合、TypeScript の静的型付けを利用するにはどうすればよいですか?