在Angular 2中导入界面

时间:2016-11-21 12:43:34

标签: angular typescript interface

在使用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 ...

我应该如何声明和导入类型,以便它们可以在多个地方使用?

5 个答案:

答案 0 :(得分:20)

你应该像那样导入它:

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

不要忘记{}

答案 1 :(得分:11)

我正在添加这个答案,因为接受的答案是不完整的。你有两个问题:

其一,您需要在界面中添加export,以便import将其作为模块添加:

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

其次,您需要将大括号{ }添加到import语句:

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

答案 2 :(得分:2)

问题是你在组件内的路径尝试更改./ with ../

答案 3 :(得分:1)

我尝试了所有的最佳答案,但仍然遇到相同的错误,然后我进一步了解了@edzillion问题,一个问题可能是引发此错误。

  

一个,您需要将导出添加到界面中,以便可以导入   作为一个模块:

     

第二步,需要在导入语句中添加大括号{}:

第三:您的接口名称必须与您的文件名(其中存在该接口的文件)相匹配。

答案 4 :(得分:0)

我认为,问题出在路径上:

请参考以下示例:

如果您的文件位于另一个文件夹中,请参阅以下内容:

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

iposts.type.ts:

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