2016-02-18 2 views
2

Скажем, у меня есть файл user.ts, который имеет следующее заявление:Декларирование интерфейсов в отдельных файлах

export interface User { 
    userName: string; 
} 

Я хочу, чтобы импортировать этот интерфейс из другого сценария Т.С., но поскольку JavaScript не поддерживает интерфейсов transpiler не приведет к созданию user.js, и я получаю сообщение об ошибке при импорте.

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

+0

, что расширение делает то файл пользователя? он должен быть .d.ts для чистых файлов интерфейса. – toskv

+0

У меня было только что. Попытаемся с d.ts, спасибо. –

+1

Обновление. Интерфейс может быть расположен в отдельном файле, таком как user.ts. Я использовал SystemJS для загрузки и перевода моего кода. Проблема, с которой я столкнулась, была вызвана тем, что SystemJS не знал, что сгенерированный пустой user.js должен использоваться как модуль. После добавления следующего в конфигурации SystemJS коды начали работать нормально: меты: { «user.ts»: { формата: «ES6» } –

ответ

12

Вы можете попытаться сделать файл пользователя с расширением .d.ts.

Например:

user.d.ts

export interface User { name: string }

и вы можете импортировать его как обычно:

someotherfile.ts

import {User} from './user'; 

function check(user: User) { 
    if (user.name) { 
     console.log('yeey works'); 
    } 
} 

check({ name: 'ion' }); 
+0

Этот код прекрасно работает, когда я использую TSC в командной строке. Но в моем приложении я использую загрузчик SystemJS, который переводит код на лету. Это дает мне следующую ошибку: (program): 1 Uncaught SyntaxError: Неожиданный экспорт токена –

+0

uhm. Не могли бы вы обновить свой вопрос с помощью конфигурации SystemJS, которую используете? :) – toskv

+1

На самом деле проблема, кажется, где-то в другом месте :( Я получил ваш пример с SystemJS. Дело в том, что я использую этот код в приложении Angular 2, которому не нравится ключевое слово export Позвольте мне еще немного изучить. Благодарим за помощь! –

Смежные вопросы