扩展Angular2中的模块TS类型

时间:2017-07-31 07:11:11

标签: angular typescript typescript-typings

我正在编写一个Angular2应用程序,其中我使用的是具有自己的打字文件的外部NPM程序包。问题是打字文件已经过时了 - 包中有些功能可用,但是没有在打字文件中声明。

所以我想弄清楚:

  1. 如何定义我自己的打字文件并让Angular2
  2. 识别它
  3. 如何使用新成员扩展现有界面
  4. 如何以正确的方式书写
  5. 我尝试过谷歌搜索,但无法找到这3个问题中任何一个的答案。我的意思是我创建了一个.d.ts文件,但我不知道如何让Angular2识别它,而且我也不知道正确的语法。

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

    我特意尝试扩展已定义的ContenfulClientAPI here

1 个答案:

答案 0 :(得分:0)

我让它在编辑器中工作,但是当运行'ng build'时,由于某种原因,angular-cli仍然没有找到新的功能。原来angular-cli只能识别'./src/typings.d.ts'文件中的输入内容,因此如果你使用的是angular-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
  3. 对我来说,最终的打字文件如下所示:

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