Почему ограничение по экспорту интерфейса по умолчанию в TypeScript?
Я использую TypeScript 1.5 beta, и я пытаюсь экспортировать интерфейс в качестве экспорта по умолчанию. Следующий код вызывает ошибку как в Visual Studio, так и в WebStorm:
export default interface Foo {...}
Однако следующий код работает нормально:
interface Foo {...}
export default Foo;
Это по дизайну, это ошибка, или я делаю что-то неправильно?
РЕДАКТИРОВАТЬ: Спасибо за ваш ответ. Однако возникает вопрос о том, какой приемлемый способ импортировать интерфейс с использованием синтаксиса модуля ES6?
Это работает:
// Foo.ts
export interface Foo {}
// Bar.ts
import {Foo} from 'Foo'; // Notice the curly braces
class Bar {
constructor(foo:Foo) {}
}
Но, так как это работает, почему бы не разрешить экспорт по умолчанию и сохранить фигурные скобки?
// Foo.ts
export default interface Foo {}
// Bar.ts
import Foo from 'Foo'; // Notice, no curly braces!
class Bar {
constructor(foo:Foo) {}
}
Ответы
Ответ 1
TypeScript v2.4.0 позволяет export default interface
. Вот пул-запрос, который внес изменение.
Теперь мы можем сделать оба из них:
// Foo.ts
export interface Foo { }
// Bar.ts
export default interface Bar { }
// Baz.ts
import { Foo } from "./foo";
import Bar from "./bar";
export class Baz implements Foo, Bar
{
}
Ответ 2
не нужно экспортировать интерфейс
// Foo.ts
interface Foo {}
// Bar.ts
class Bar {
constructor(foo:Foo) {}
}