首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从同一个文件名导入接口定义?

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

Stack Overflow用户
提问于 2017-06-27 14:18:43
回答 2查看 3.2K关注 0票数 0

我有一个文件:api.ts和我用api.d.ts定义了接口。虽然当我运行类型记录时,它会抱怨无法找到的接口:

api.ts(24,47):错误TS2304:无法找到名称'IHeaders‘。

当接口具有完全相同的名称时,如何在主文件中导入接口?

我试过以下几种方法:

代码语言:javascript
复制
// api.d.ts

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

// api.ts

import { IHeaders } from './api';

但我犯了一个不同的错误:

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

最好的方法是什么?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2017-06-27 14:22:09

.d.ts文件的目的是为遗留Javascript代码提供类型信息。

它们不像C/C++头文件,不应该与类型记录代码一起使用。

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

票数 3
EN

Stack Overflow用户

发布于 2017-06-27 14:43:23

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

你的api.ts可能是这样的

代码语言:javascript
复制
export interface IHeaders {
  [key: string]: string;
}

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

使用(test.ts):

代码语言:javascript
复制
import { Headers, IHeaders } from "./api"

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

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

代码语言:javascript
复制
///<reference path="api.d.ts" />

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44782687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档