Подтвердить что ты не робот

Почему ограничение по экспорту интерфейса по умолчанию в 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) {}
}
4b9b3361

Ответ 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) {}
}