web-dev-qa-db-ja.com

インポートインターフェイスAngular 2

Angular 2を使用するMeteorアプリで、次のようなカスタムデータ型を作成します。

interface MyCustomType {
  index: number;
  value: string;
}

次に、このカスタムタイプを複数のファイルで使用します。 「mycustom.type.ts」という名前の別のファイルを作成してみましたが、その内容は次のとおりです。

export interface MyCustomType {
  index: number;
  value: string;
}

次に、このタイプをインポートして、別のファイルで使用できるようにします。

import MyCustomType from "./mycustom.type"

ただし、Atomは次のエラーを報告します。

TS Error File '/.../mycustom.type.ts' is not a module ...

タイプを複数の場所で使用できるように、タイプを宣言およびインポートする方法を教えてください。

11
James Newton

むしろそのようにインポートする必要があります:

import { MyCustomType } from './mycustom.type';

{}を忘れないでください

20
maxime1992

受け入れられたものが不完全であるため、この回答を追加しています。次の2つの問題があります。

1つは、モジュールにexportできるように、インターフェイスにimportを追加する必要があります。

export interface MyCustomType { index: number; value: string; }

次に、中括弧{ }をimportステートメントに追加する必要があります。

import { MyCustomType } from './mycustom.type';

11
edzillion

問題は、コンポーネント内のパスです。/で./を変更してみてください

2
Luis Figueredo

私はすべてのトップアンサーを試しましたが、それでも同じエラーが発生し、さらに理解します @ edzillion 1つの問題がこのエラーを発生させる可能性があります。

1つは、モジュールとしてインポートできるように、インターフェースにエクスポートを追加する必要があります。

次に、中括弧{}をimportステートメントに追加する必要があります。

第三:インターフェース名は、ファイル名と一致する必要があります(インターフェースが存在するファイル)

1
Aref Zamani

私は、問題はパスにあると思います:

以下の例を参考にしてください:

ファイルが別のフォルダーにある場合は、以下を参照してください。

import { IPosts } from "../interfaces/iposts.type";

iposts.type.ts:

export interface IPosts {
   userId: number;
   id: number;
   title: string;
   body: string;
} 
0
sushil kumar