我有一个文件: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'。
最好的方法是什么?
由于
答案 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。