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
- 1. Dichiarare un knockout calcolato osservabile in dattiloscritto
- 2. Dattiloscritto: interfacce vs tipi
- 3. Genera interfacce dattiloscritto dalle interfacce Java
- 4. dattiloscritto per implementare interfacce multiple
- 5. È possibile dichiarare la classe constexpr in un'intestazione e definirla in un file .cpp separato?
- 6. Come potrei dichiarare un 'scimmia patchata' prototipo nel dattiloscritto
- 7. Come importare un file .hs in Haskell
- 8. Come importare una classe dattiloscritto namespace in angolare 2
- 9. Carica il file js in un file dattiloscritto
- 10. Come importare correttamente React JSX da un file separato in Typescript 1.6
- 11. Come importare o includere strutture di dati (ad es. Un dict) in un file Python da un file separato
- 12. Dichiarare il tipo di "questo" in una funzione dattiloscritto?
- 13. Le interfacce non possono dichiarare i tipi
- 14. Java, dichiarare la variabile con più interfacce?
- 15. Come importare un file enorme in PostgreSQL?
- 16. Come esportare e importare un file XSD in Visual Studio?
- 17. Trattare con enumerazioni quando le interfacce sono in progetto separato
- 18. mysqldump con db in un file separato
- 19. Log4Net in un file di configurazione separato
- 20. Come posso importare un file esterno con TypeScript?
- 21. Interfacce e proprietà
- 22. Come definire le costanti in un file separato in Perl?
- 23. webpack non in grado di importare immagini (utilizzando express e angular2 in dattiloscritto)
- 24. Dattiloscritto: Interfacce nei tipi di unione Causa Errori con Instanceof
- 25. Come rendere questo script visibile in un file separato?
- 26. Espressioni di dattiloscritto e moduli esterni (browserify)
- 27. Come posso estrarre tutte le classi in un file separato?
- 28. Come importare/includere i file sorgente in JavaScript?
- 29. Come dichiarare un volume con nome in un file Docker?
- 30. Come separare ng-template in un file separato
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