如何从同一文件名导入接口定义?

时间:2017-06-27 14:18:43

标签: javascript typescript

我有一个文件:api.ts我在api.d.ts中定义了我的接口。虽然当我运行typescript时它抱怨我的界面无法找到:

  

api.ts(24,47):错误TS2304:找不到名字'IHeaders'。

如果我的主文件中的接口具有完全相同的名称,我如何导入它?

我尝试了以下内容:

// api.d.ts

export interface IHeaders {
  [key: string]: string;
}

// api.ts

import { IHeaders } from './api';

但是我得到了一个不同的错误:

  

api.ts(4,10):错误TS2305:模块'“api”'没有导出成员   'IHeaders'。

最好的方法是什么?

由于

2 个答案:

答案 0 :(得分:3)

.d.ts文件的目的是为旧版Javascript代码提供输入信息。

它们不像C / C ++头文件,不应与Typescript代码一起使用。

您应该将接口移动到主文件。

答案 1 :(得分:0)

SLaks的回答是正确的:你不应该引入.d.ts接口文件。

您的api.ts看起来像这样

export interface IHeaders {
  [key: string]: string;
}

export class Headers implements IHeaders {
   [key: string]: string;
}

用法(test.ts):

import { Headers, IHeaders } from "./api"

var a = new Headers();
a["x"] = "y";

但是,如果您确实想要使用定义文件,请在要导入声明的文件顶部添加以下行:

///<reference path="api.d.ts" />

您可以找到完整的示例in this answer