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) {}
}
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
{
}
il n'est pas nécessaire d'exporter l'interface
// Foo.ts
interface Foo {}
// Bar.ts
class Bar {
constructor(foo:Foo) {}
}