如何从`.d.ts`文件导入?

时间:2016-09-13 07:24:07

标签: angular typescript

此行适用于使用angular2 RC4

的项目

import * as mapTypes from '../../../../node_modules/angular2-google-maps/core/services/google-maps-types.d.ts';

发生了什么?

现在我正在尝试使用RC6的新种子文件,同一行给我这个错误

error TS2691: An import path cannot end with a '.d.ts' extension. Consider importing '../../../../node_modules/angular2-google-maps/core/services/google-maps-types' instead.

但如果我做出建议的更改,我会

Cannot find module '../../../../node_modules/angular2-google-maps/core/services/google-maps-types'

.d.ts文件如下所示:

/**
 * angular2-google-maps - Angular 2 components for Google Maps
 * @version v0.12.0
 * @link https://github.com/SebastianM/angular2-google-maps#readme
 * @license MIT
 */
export declare var google: any;
export interface GoogleMap {
    constructor(el: HTMLElement, opts?: MapOptions): void;
    panTo(latLng: LatLng | LatLngLiteral): void;
    setZoom(zoom: number): void;
    addListener(eventName: string, fn: Function): void;
    getCenter(): LatLng;
    setCenter(latLng: LatLng | LatLngLiteral): void;
    getBounds(): LatLngBounds;
    getZoom(): number;
    setOptions(options: MapOptions): void;
}
...

,匹配的.ts文件看起来像

/**
 * angular2-google-maps - Angular 2 components for Google Maps
 * @version v0.12.0
 * @link https://github.com/SebastianM/angular2-google-maps#readme
 * @license MIT
 */
"use strict";

//# sourceMappingURL=google-maps-types.js.map

注意:这个软件包的更新版本与RC6相匹配,但我应该能够将其至少在TS中编译

2 个答案:

答案 0 :(得分:1)

如果您使用的是最新版本的TypeScript,并且输入定义嵌入在您的npm包中,那么您只需从模块导入:

import { GoogleMap } from 'angular2-google-maps/core/services/google-maps-types'

即使它是一个界面。

事实上,您正在从core/services/googles-maps-types.js导入定义,但此文件仅用于提供其.d.ts文件中的关联定义。

它的工作方式就像是直接从.ts文件导入一样,但是当你在npm模块中时,它们会将定义文件嵌入到允许定义导入中。

答案 1 :(得分:0)

通常在TypeScript中,您可以在.ts文件的顶部添加对定义文件的引用,如下所示:

/// <reference path="../../../../node_modules/angular2-google-maps/core/services/google-maps-types.d.ts"

之后,您可以导入定义文件中的内容。