2015-10-21 3 views
0

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

С внутренними модулями вы можете вставить ссылку .ts в верхней части своего файла, и вам было хорошо идти. Blah implements Updatable

С внешними модулями, однако, я не могу понять, как писать и получать доступ к этому интерфейсу. Я чувствую, что не хочу импортировать его, потому что это не предмет JS, в то время как его экспорт в глобальную область не делает его доступным (не удается найти Updatable). Единственное другое предложение, которое я нашел в Интернете, заключалось в том, что кто-то использовал d.ts-файлы в качестве интерфейсов, которые кажутся странными, поскольку я думал, что они предназначены для файлов определений.

Может ли кто-нибудь пролить свет на лучший способ сделать это?

После того, как еще несколько копающих я прибыл на this ticket.

interface I { 

} 

export default I; 
+2

Я бы рекомендовал поместить эти интерфейсы в файлы d.ts. Это общая практика, по крайней мере, насколько я знаю. – Don

ответ

2

Я чувствую, что я не хочу, чтобы импортировать его, потому что это не JS вещи, в то же время его экспорт на глобальной области видимости, не делает его доступным (не может найти обновляемым).

Вперед и импортируйте их. TSC не будет выводить операторы импорта с вещами, которые используются только для проверки типов. Интерфейсы просто исчезнут из полученного JavaScript.

Этот код:

import {FooClass, BarInterface, BazClass} from './baz'; 

class Bam extends FooClass { 
    boom(baz: BazClass): BarInterface { return {}; } 
} 

Станет ниже код, если вы нацелены ES6.

import { FooClass } from './baz'; 

class Bam extends FooClass { 
    boom(baz) { return {}; } 
} 

Единственное другое предложение я нашел в Интернете, что кто-то использует d.ts файлы в качестве интерфейсов, которые, кажется странным, как я думал, что они были для файлов определений.

Да, я согласен. Я действительно рекомендую помещать интерфейсы, которые имеют отношение к модулю, в модуле и не разбросаны по всему миру.

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