2016-11-21 14 views
7

В приложении Метеора, который использует Угловые 2, я хочу, чтобы создать пользовательский тип данных, что-то вроде этого:интерфейса импорта в угловом 2

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 ... 

Как я должен быть декларирование и импорта типов, так что они могут быть использованы в нескольких местах?

ответ

13

Вы должны импортировать, а это так:

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

не забудьте { и }.

+0

У меня такая же проблема, но у меня уже был скобки {}, так что это не сработало для меня. Любые другие возможные решения? –

+0

Этот ответ является лишь частью проблемы. Если вы хотите «импортировать» модуль, вам нужно установить интерфейс как экспортируемый - .e.g. 'export interface MyCustomType {' – edzillion

+0

Если вы хотите импортировать, вам нужно экспортировать. Конечно. Кроме того, OP уже экспортировал его, поэтому я действительно не вижу здесь своей цели. – Maxime

2

проблема путь вы внутри изменения компонент Ьгу ./ с ../

7

Я добавляю этот ответ, потому что принял один неполный. У вас есть две проблемы:

One, вам нужно добавить export к интерфейсу, так что вы можете import его как модуль:

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

Во-вторых вам нужно добавить фигурные скобки { } для импорта заявление:

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

+0

Какова цель фигурных скобок {}? – alibenmessaoud

+2

@alibenmessaoud для 'import' описывает, какие модули импортируются из файла. например 'import {ModuleA, ModuleB, ModuleC} из './modulefile'' – edzillion

0

Я думаю, проблема в пути:

Пожалуйста, см ниже пример:

Если файл в другую папку, то смотрите ниже:

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

iposts.type.ts:

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