在使用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 ...
我应该如何声明和导入类型,以便它们可以在多个地方使用?
答案 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;
}