[英]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.