Chcę zdefiniować kilka interfejsów w ich własnym pliku w moim projekcie opartym na maszynopisie, z którego będę implementował klasy do produkcji, jak również do prób do testów. Nie mogę jednak określić, jaka jest prawidłowa składnia. Znalazłem wiele tutoriali na temat deklarowania interfejsów i ich implementacji, ale wszystkie mają trywialną implementację zarówno interfejsu, jak i klas pochodnych w tym samym pliku, co nie jest bardzo rzeczywiste. Jaki jest właściwy sposób na eksportowanie i importowanie interfejsów?Jak deklarować i importować interfejsy maszynopisów w oddzielnym pliku?
Odpowiedz
Musisz wyeksportować interfejs z pliku, w którym jest zdefiniowany i zaimportować go gdziekolwiek chcesz go użyć.
IfcSampleInterface.ts
export interface IfcSampleInterface {
key: string;
value: string;
}
SampleInterface.ts
import { IfcSampleInterface } from './IfcSampleInterface.ts';
let sampleVar: IfcSampleInterface;
Musisz wyeksportować interfejsy do pliku, w którym są zdefiniowane i zaimportować je do plików, w których są używane. Zobacz ten link, aby zobaczyć przykłady.
x.ts
interface X{
...
}
export default X
y.ts
import X from "./x.ts"
// You can use X now
Więcej informacji można znaleźć https://www.typescriptlang.org/docs/handbook/modules.html
Zastosowanie definicja (d.ts
) plików i przestrzenie nazw, nie ma potrzeby importowania modułów/eksport w ten sposób. DefinitelyTyped projekt ma guidance i ogromną liczbę examples, jak to zrobić.
To jest poprawna odpowiedź IMO. Jeśli twój plik definiuje tylko interfejs, jest to preferowany sposób i jest znacznie czystszy. – orad
- 1. Jak importować z pliku konfiguracyjnego w kolbie?
- 2. Składnia maszynki w oddzielnym pliku JS
- 3. Jak deklarować i używać NSString globalnych stałe
- 4. Utwórz obiekt z klasy w oddzielnym pliku
- 5. Przechowywanie szablonu jsRender w oddzielnym pliku js
- 6. Aplikacja IOS - zdefiniuj protokół w oddzielnym pliku
- 7. Jak zdefiniować stałe w oddzielnym pliku w Perlu?
- 8. Jak rejestrować inspekcję aplikacji w oddzielnym pliku na Wildfly 8
- 9. Serializacja przedmiotów maszynopisów?
- 10. Domyślne metody i interfejsy rozszerzające inne interfejsy
- 11. Jak porównać klasy i interfejsy?
- 12. DataTemplate w oddzielnym ResourceDictionary
- 13. Jak deklarować zmienne i używać instrukcji w LINQPad?
- 14. Jak deklarować zmienne akcentowane w Pythonie
- 15. Jak deklarować porty w Cloud9 używając Pythona
- 16. Dlaczego interfejs można deklarować tylko w klasie najwyższego poziomu?
- 17. nie można importować pliku com.squareup.okhttp.OkHttpClient;
- 18. Jak deklarować obsługę zdarzeń lambda w VB.Net?
- 19. jak korzystać z indeksu ciągów maszynopisów?
- 20. Jak importować z pliku w bieżącym katalogu w Pythonie 3?
- 21. Ogólne i nietypowe interfejsy
- 22. AutoFixture i interfejsy
- 23. TabItem w oddzielnym XAML
- 24. iPhone - Oddzielanie dźwięku z pliku wideo i zapisywanie go w oddzielnym pliku
- 25. Interfejsy i metody asynchroniczne
- 26. F # interfejsy i właściwości
- 27. hierarchiczne interfejsy i implementacje
- 28. generyczne interfejsy i polimorfizm
- 29. Wyłącz kompilację maszynopisów w Visual Studio 2013
- 30. Interfejsy, delegaty i protokoły Objective
To jest składnia, którą próbowałem początkowo, ale dostaję z nią błędy. – snort
@Nasz e-mail możesz wyjaśnić, jakiego rodzaju błąd dostaniesz? – Ajay
Wygląda na to, że nazwa pseudonimu nie może być użyta jako klucz w Aurelia (lub po prostu nie wiem, jak poprawnie ją zadeklarować). Błąd to "Nie można znaleźć nazwy [BTAuthService]" Ten kod zawiera błąd: container.registerSingleton (BTAuthService, MockAuthService); Jeśli najpierw przypisz interfejs do var i przekażę go do registerSingleton, nie otrzymam błędu. – snort