2017-06-27 7 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という完全な例があります。

関連する問題