2016-05-16 24 views
15

Voglio definire diverse interfacce nel proprio file nel mio progetto basato su dattiloscritto, dal quale implementerò le classi per la produzione, nonché i mock per il test. Tuttavia, non riesco a capire qual è la sintassi corretta. Ho trovato un sacco di tutorial su come dichiarare le interfacce e implementarle, ma tutte hanno un'implementazione banale sia dell'interfaccia che delle classi derivate nello stesso file, che non è molto reale. Qual è il modo giusto per esportare e importare le interfacce?Come dichiarare e importare interfacce dattiloscritto in un file separato

risposta

20

È necessario esportare l'interfaccia dal file in cui è definito e importarlo ovunque vuoi usarlo

IfcSampleInterface.ts

export interface IfcSampleInterface { 
    key: string; 
    value: string; 
} 

SampleInterface.ts

import { IfcSampleInterface } from './IfcSampleInterface.ts'; 

let sampleVar: IfcSampleInterface; 
+1

Questa è la sintassi che ho provato inizialmente ma ho degli errori. – snort

+1

@snort puoi per favore elaborare quale tipo di errore stai ricevendo? – Ajay

+0

Sembra che il problema è che il nome di tipo non può essere utilizzato come chiave in Aurelia (o semplicemente non so come dichiararlo correttamente). L'errore è "Impossibile trovare il nome [BTAuthService]" Questo codice restituisce l'errore: container.registerSingleton (BTAuthService, MockAuthService); Se prima assegno l'interfaccia a una var e la passo a registerSingleton, non ottengo alcun errore. – snort

2

È necessario esportare le interfacce nel file in cui sono definite e importarle nei file in cui sono utilizzate. Vedere questo collegamento per gli esempi.

x.ts

interface X{ 
    ... 
} 
export default X 

y.ts

import X from "./x.ts" 
// You can use X now 

Per ulteriori informazioni, vedere https://www.typescriptlang.org/docs/handbook/modules.html

5

Usa definizione (d.ts) file e spazi dei nomi, non c'è bisogno di importare i moduli/esportazione in questo modo. Il progetto DefinitelyTyped ha guidance e un numero enorme di examples come farlo.

+0

Questa è la risposta corretta IMO. Se il tuo file definisce solo un'interfaccia, questo è il metodo preferito ed è molto più pulito. – orad

Problemi correlati