2017-07-31 161 views
1

我正在編寫一個Angular2應用程序,並且在其中使用了一個具有其自己的類型文件的外部NPM軟件包。問題是typings文件已過時 - 軟件包中有可用的函數,但未在typings文件中聲明。在Angular2中擴展模塊TS類型

所以我想弄清楚:

  1. 如何定義我自己的分型文件,並把它通過Angular2
  2. 認識如何與新成員擴展現有界面分類
  3. 怎麼寫以正確的方式輸入

我試過谷歌搜索,但無法弄清楚這3個問題中的任何一個的答案。我的意思是我創建了一個.d.ts文件,但我不知道如何讓Angular2識別它,並且我也不知道正確的語法。

declare namespace ContentfulClientAPI { 
    export interface ContentfulClientApi { 
     parseEntries(data: any): any; 
    } 
} 

我特別想擴展ContenfulClientAPI定義here

回答

0

我得到了它的編輯工作,但運行「NG建設」時,角-CLI由於某種原因未找到新功能還在。原因是角度cli只能識別'./src/typings.d.ts'文件中的類型,所以如果您使用的是角度cli,請在'typeRoots'中添加路徑並將類型放入該文件。

  1. 首先,編輯和編譯器來識別.d.ts文件,需要在「tsconfig.json」文件編輯「typeRoots」屬性。該屬性指定編譯器(和編輯器)應該在哪裏查找類型。默認情況下,它僅查找「node_modules/@ types」,但您可以另外添加「./typings」,例如。
  2. 在您指定的新位置,創建一個新的打字文件,例如'contentful.d.ts',並在裏面創建打字。按照這些計算出正確的語法:https://www.typescriptlang.org/docs/handbook/declaration-files/templates.html

對於我來說,最終的分型文件看起來像這樣:

import * as contentful from 'contentful'; 

declare module 'contentful' { 
    export interface ContentfulClientApi { 
     parseEntries(data: any): any; 
    } 
}