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.
オブジェクトを解決できなかったので、最初にこの行を追加しました。この混乱の原因となるエラー報告にバグがなければなりません。
私はimport文に関連する問題を特定しました。それを導入することによって、TSエラー報告は無関係の多くの問題を提起しました。私は輸入明細書を削除しましたが、私は今どのように輸入を行うのか混乱しています。 – Raven