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
È 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;
È 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
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.
Questa è la risposta corretta IMO. Se il tuo file definisce solo un'interfaccia, questo è il metodo preferito ed è molto più pulito. – orad
Questa è la sintassi che ho provato inizialmente ma ho degli errori. – snort
@snort puoi per favore elaborare quale tipo di errore stai ricevendo? – Ajay
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