簡體   English   中英

如何在聲明文件(* .d.ts)中導入第三方模塊?

[英]How do I import third-party module in declaration file(*.d.ts)?

我創建的類型聲明文件( index.d.ts ),我需要使用第三方包的對象(在“moment.js” node_modules )類型。


  // index.d.ts

  import * as Moment from 'moment';

  declare var $: any;
  declare var google: any;

  interface foo {
    a: Moment;
    b: string;
    ...
  } 

我做了上面的代碼,但是沒有用。 如何在*.d.ts文件中導入第三方模塊?

Moment包裝隨附.d.ts文件將其導出的所有內容包裝到命名空間中。 因此,對於這個庫, import * as Moment from 'moment';import * as Moment from 'moment';一樣import * as Moment from 'moment'; 表示Moment變量是一個名稱空間,而不是Moment實例本身的接口。 您需要的是位於名稱空間內的接口。

您有兩種選擇來處理此問題:

  import * as moment from 'moment';

  interface foo {
    a: moment.Moment;
    b: string;
  } 

或在導入過程中解構接口:

  import { Moment } from 'moment';

  interface foo {
    a: Moment;
    b: string;
  } 

就我個人而言,我使用的是我的文件的第一種樣式,該文件使用了從命名空間導出的大量成員,但是如果我只需要少數文件,則使用第二種樣式。

編輯...

如果您的tsconfig啟用了esModuleInterop (這是最新的首選設置),則從第一個示例導入可以/應該將* as位刪除。

import moment from 'moment';

暫無
暫無

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

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