我有一个文件:api.ts和我用api.d.ts定义了接口。虽然当我运行类型记录时,它会抱怨无法找到的接口:
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‘。
最好的方法是什么?
谢谢
发布于 2017-06-27 14:22:09
.d.ts文件的目的是为遗留Javascript代码提供类型信息。
它们不像C/C++头文件,不应该与类型记录代码一起使用。
您应该将接口移动到主文件。
发布于 2017-06-27 14:43:23
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。
https://stackoverflow.com/questions/44782687
复制相似问题