【问题标题】:Extending module TS typings in Angular2在 Angular2 中扩展模块 TS 类型
【发布时间】:2017-07-31 19:19:53
【问题描述】:

我正在编写一个 Angular2 应用程序,并且在其中我使用了一个具有自己的类型文件的外部 NPM 包。问题是类型文件已过时 - 包中有可用的函数,但未在类型文件中声明。

所以我想弄清楚:

  1. 如何定义我自己的类型文件并让 Angular2 识别它
  2. 如何使用新成员扩展现有接口输入
  3. 如何正确书写打字

我试过谷歌搜索,但找不到这 3 个问题的答案。我的意思是我创建了一个 .d.ts 文件,但我不知道如何让 Angular2 识别它,也不知道正确的语法。

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

我特别想扩展定义here的ContenfulClientAPI:

【问题讨论】:

    标签: angular typescript typescript-typings


    【解决方案1】:

    我让它在编辑器中工作,但是在运行 '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

    对我来说,最终的类型文件如下所示:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-05
      • 2016-04-26
      • 2019-05-14
      • 1970-01-01
      • 1970-01-01
      • 2018-01-04
      • 2019-05-29
      • 2019-08-30
      相关资源
      最近更新 更多