web-dev-qa-db-fra.com

Pourquoi la limitation sur l'exportation d'une interface par défaut en TypeScript?

J'utilise TypeScript 1.5 beta et j'essaie d'exporter une interface comme exportation par défaut. Le code suivant provoque une erreur dans Visual Studio et WebStorm:

export default interface Foo {...}

Cependant, le code suivant fonctionne correctement:

interface Foo {...}
export default Foo;

Est-ce par conception, est-ce un bug ou est-ce que je fais quelque chose de mal?

EDIT: Merci pour votre réponse. Cependant, cela soulève la question: quelle est la manière acceptée d'importer une interface à l'aide de la syntaxe du module ES6?

Cela marche:

// Foo.ts
export interface Foo {}

// Bar.ts
import {Foo} from 'Foo'; // Notice the curly braces

class Bar {
    constructor(foo:Foo) {}
}

Mais, puisque cela fonctionne, pourquoi ne pas autoriser une exportation par défaut et enregistrer les accolades?

// Foo.ts
export default interface Foo {}

// Bar.ts
import Foo from 'Foo'; // Notice, no curly braces!

class Bar {
    constructor(foo:Foo) {}
}
47
battmanz

TypeScript v2.4.0 permet export default interface. Voici la pull-request qui a introduit le changement.

Nous pouvons maintenant faire les deux:

// 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 
{

}
14
Shaun Luttin

il n'est pas nécessaire d'exporter l'interface

// Foo.ts
interface Foo {}

// Bar.ts
class Bar {
    constructor(foo:Foo) {}
}
0
Juan Pablo