2016-07-06 17 views
8

Tôi mới với Typecript (2 tuần), và tôi làm việc trên dự án để bọc khuôn khổ d3.js. Tôi gặp sự cố với việc sử dụng "d3.d.ts", không gian tên, mô-đun xuất, nhập.undefined d3.scale trong Typescript

Vấn đề của tôi: Khi tôi cố gắng sử dụng d3.scale.linear(), tôi có lỗi trong giao diện điều khiển trình duyệt của tôi:

TypeError: d3.scale is undefined 

Mã:

/// <reference path="../typings/d3.d.ts">; 
"use strict"; 
var linear = d3.scale.linear(); 
console.log("linear resolv !") 

tùy chọn trình biên dịch của tôi (Tôi không có lỗi về quy trình biên dịch, nhưng có lẽ nó thú vị):

{ 
    "files": [ 
     "src/twod3/workspace.ts", 
     "src/twod3/component/basic.ts", 
     "src/twod3/component/data.ts", 
     "src/twod3/component/operation.ts", 
     "src/main.ts" 
    ], 
    "compilerOptions": { 
     "noImplicitAny": true, 
     "target": "es2015", 
     "module":"commonjs", 
     "sourceMap":true 
    } 
} 

Tôi thử chiến lược nhập khác ithout thành công.

Các d3.d.ts

declare namespace d3 { 
... 
    export module scale { 
      ... 
      export function linear(): Linear<number, number>; 
      ... 
    } 
} 

Tôi không hiểu được vấn đề, cảm ơn bạn đã giúp đỡ của bạn.

+0

Chính xác:

d3.select(...)
hoạt động tốt –

+4

thử 'd3.scaleLinear' thay vì' d3.scale.linear' vì tôi đoán bạn đang sử dụng phiên bản d3 4 – Cyril

+0

Đó là công việc. Cảm ơn bạn. –

Trả lời

2

Tôi đã có một loại vấn đề tương tự. Tôi phải khớp với phiên bản D3, hỗ trợ các phương thức dựng sẵn cho d3. Hoặc là phù hợp với phiên bản của D3.js, đảm bảo bạn cập nhật bower của mình. Hoặc khớp với các phương thức được tạo sẵn cho phiên bản hiện tại của bạn.

Phiên bản được hỗ trợ của tôi cho d3.scale.ordinal là '3.5.17', trước đây tôi đã ở phiên bản mới nhất.

+0

Vì vậy, tôi đang sử dụng [email protected], bây giờ tôi cũng cần gõ cho cùng một phiên bản, nhưng khi không có kiểu gõ cho phiên bản 3.5.17, phiên bản nào là bạn theo dõi? –

26

Cẩn thận với phiên bản dành cho d3.js Trong phiên bản 4.2.1 d3.scale.linear(); đưa ra lỗi sau. LoạiError: d3.scale.linear() scale is undefined

Tôi đã sửa lỗi này trong phiên bản 4.2.1 bằng cách sử dụng d3.scaleLinear();