2017-01-08 8 views
1

Typescript(2.1.4)でインターフェイスをインポートする際に問題があります。typescriptでインターフェイスをインポートする際のエラー

これは私のインターフェイス

// src/cache.model.ts 
import * as ng from 'angular'; 

module angularjsIndexedDB { 

    export interface Cache { 
     get<T>(key : string): ng.IPromise<T>; 
     getOrCreate<T>(key : string, fetcher:() => ng.IPromise<T>): ng.IPromise<T>; 
     put<T>(key : string, value: T): ng.IPromise<void>; 
     updateChecksum(serverModelChecksum: number): ng.IPromise<void>; 
    } 

} 

であり、これは、インターフェイスを実装する同じモジュール内のクラスです。

// src/indexeddb-store.service.ts 
module angularjsIndexedDB { 

    export class IndexedDBStore implements Cache { 
     // (... code implementing the interface ...) 
    } 

} 

インタフェースが同じTSモジュールであるにもかかわらず、私はエラーにTS2304:Cannot find name 'Cache'.

を取得し、私は

// src/indexeddb-store.service.ts 
module angularjsIndexedDB { 

    export class IndexedDBStore implements angularjsIndexedDB.Cache { 
     // (... code implementing the interface ...) 
    } 

} 

直接参照を持つように実装を変更した場合、エラーがTS2694:Namespace 'angularjsIndexedDB' has no exported member 'Cache'.にもかかわらずなり、インターフェイスが明確にエクスポートされます。

私は

import { Cache } from "./cache.model"; 

または

import { angularjsIndexedDB.Cache } from "./cache.model"; 

を追加するような他のものを試してみたが、これらはあまりにも空に出てきます。

私は以前このコードを使用しても問題はなかったと思います。私が見落としたことはありますか?

EDIT:

これは私のtsconfig.jsonです。私はもう少しテストをしましたが、間違ったエラーが発生する原因となる別の問題があると思います。試して問題を特定するためにコンポーネントを再構築します。

// tsconfig.json 
{ 
    "compilerOptions": { 
    "target": "es5", 
    "module": "amd", 
    "moduleResolution": "node", 
    "sourceMap": true, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "noImplicitAny": false, 
    "suppressImplicitAnyIndexErrors": true, 
    "outFile": "release/index.js" 
    } 
} 

EDIT2: 私は、この問題の '原因' を発見しました。 cache.model.tsファイルは、最初の行でimport * as ng from 'angular';ステートメントを使用します。 TSはファイル内のng.オブジェクトを解決できなかったので、最初にこの行を追加しました。この混乱の原因となるエラー報告にバグがなければなりません。

答えて

0

あなたは同じエラーを表示していません。ここに私のコードは次のとおりです。

cache.model.ts:

module angularjsIndexedDB { 

    export interface Cache { 
    } 

} 

のIndexedDB-store.service.ts:

module angularjsIndexedDB { 

    export class IndexedDBStore implements Cache { 
     // (... code implementing the interface ...) 
    } 

} 

そして、私はこのようにコンパイル:

TSC

tsc v2.1.4を使用していて、エラーはありません。いくつかのコンパイラオプションがこれを引き起こしている

  1. :ここ

    が可能です。

  2. あなたは何らかの形でcache.model.tsファイルをコンパイルしていません。
  3. あなたが私に見せているコードは不完全です。

私の設定を上記の方法で試してみることができますか?

+1

私はimport文に関連する問題を特定しました。それを導入することによって、TSエラー報告は無関係の多くの問題を提起しました。私は輸入明細書を削除しましたが、私は今どのように輸入を行うのか混乱しています。 – Raven

関連する問題