2017-06-27 30 views
0

我有一个文件:api.ts,我在api.d.ts中定义了我的接口。虽然当我运行打字稿它抱怨我的接口,无法找到:如何从相同的文件名导入界面定义?

api.ts(24,47): error TS2304: Cannot find name 'IHeaders'.

如何导入我的接口在我的主文件,当他们有相同的名字吗?

我已经试过如下:

// api.d.ts 

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

// api.ts 

import { IHeaders } from './api'; 

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

api.ts(4,10): error TS2305: Module '"api"' has no exported member 'IHeaders'.

什么是最好的方法呢?

感谢

回答

2

.d.ts文件中的点是为传统的Javascript代码输入信息。

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

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

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"; 

然而,如果你真的想用一个definintion文件,添加以下行在要导入声明的文件顶部:

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

你可以找到一个完整的例子in this answer

相关问题