在Angular2中扩展模块TS类型

在Angular2中扩展模块TS类型

问题描述:

我正在编写一个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

我得到了它的编辑工作,但运行“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; 
    } 
}