2015-05-15 2 views
40

Sto usando TypeScript 1.5 beta e sto tentando di esportare un'interfaccia come esportazione predefinita. Il seguente codice causa un errore sia in Visual Studio e WebStorm:Perché la limitazione all'esportazione di un'interfaccia per impostazione predefinita in TypeScript?

export default interface Foo {...} 

Tuttavia, il seguente codice funziona bene:

interface Foo {...} 
export default Foo; 

È questo in base alla progettazione, si tratta di un bug, o sto facendo qualcosa sbagliato?

MODIFICA: Grazie per la risposta. Si pone la domanda, tuttavia, quindi qual è il modo accettato di importare un'interfaccia utilizzando la sintassi del modulo ES6?

Questo funziona:

// Foo.ts 
export interface Foo {} 

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

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

Ma, dal momento che funziona, perché non permettere l'esportazione di default e salvare le parentesi graffe?

// Foo.ts 
export default interface Foo {} 

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

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

Probabilmente si dovrebbe aumentare questo come un bug. –

risposta

6

TypeScript v2.4.0 consente export default interface. Here is the pull-request che ha introdotto la modifica.

Ora possiamo fare entrambe le cose di questi:

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

} 
Problemi correlati