模块内的Typescript命名空间 - 如何引用它?

时间:2016-12-08 22:16:37

标签: typescript

ngstorage库的类型定义如下:

import * as angular from 'angular';

declare module 'angular' {
  export namespace storage {

    export interface IStorageService {
      //interface definition
    }

    export interface IStorageProvider extends angular.IServiceProvider {
      //interface definition
    }
  }
}

三个问题:

  1. 当已经存在的模块' angular'再次声明,如本例第3行所示?
  2. 在模块定义export namespace storage中导出命名空间是什么意思?
  3. 如何将IStorageService导入我的.ts文件?到目前为止,我没有尝试过任何工作。

    import { IStorageService } from 'ngstorage'

    import { IStorageService } from 'angular.storage'

    或直接引用IStorageService,如下所示:

    angular.storage.IStorageService

1 个答案:

答案 0 :(得分:1)

它被称为Module Augmentation,它是一种向现有模块添加定义的方法。
在这种情况下,当您导入发布的文件时,它会将新定义添加到angular模块,就像js文件在运行时一样。

您应该可以像这样导入它:

import * as angular from 'ngstorage';

let a: angular.storage.IStorageService;
...

修改

尝试:

import * as angular from 'angular';
import 'ngstorage';

let a: angular.storage.IStorageService;