簡體   English   中英

Typescript 和 d3

[英]Typescript and d3

我有一個使用 d3 庫的應用程序。 在 typescript 代碼中,為了成功使用 d3(即,沒有編譯器錯誤 TS2686,d3 指的是 UMD 全局,但當前文件是一個模塊),我必須包括以下行: import * as d3 from 'd3'; 問題在於它發出: require('d3'); 在 JavaScript 中。那不是 d3 庫在我們的應用程序中的位置。 它位於 web 應用程序的根目錄下,位於名為“d3”的目錄中。 另外,我根本不需要它在 JavaScript 中,因為我們的 index.html 將它作為全局加載。 很難弄清楚如何獲取 TypeScript 源代碼以允許我在不導入的情況下引用 d3。

目前,UMD typedef不能從模塊文件中作為全局命名空間引用 (它只允許您從非模塊文件引用全局命名空間。) 解決方法是在項目中手動聲明全局命名空間:

// global.d.ts
import * as _d3 from "d3";

declare global {
  const d3: typeof _d3;
}

現在你可以從模塊中引用d3而不從"d3"導入,你仍然應該根據@types/d3d3對象進行所有正確的類型檢查。

Aaron Beall 的上述回答非常適合 op 所處的非常具體的情況,但更一般地說,如果你現在想將 TypeScript 與 D3 一起使用, DefinitelyTyped就是通往 go 的方式。你可以

npm i d3
npm i -D @types/d3

import * as d3 from 'd3';

與任何其他@types庫一樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM