2016-05-16 11 views
15

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

20

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; 
+1

To jest składnia, którą próbowałem początkowo, ale dostaję z nią błędy. – snort

+1

@Nasz e-mail możesz wyjaśnić, jakiego rodzaju błąd dostaniesz? – Ajay

+0

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

2

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

5

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ć.

+0

To jest poprawna odpowiedź IMO. Jeśli twój plik definiuje tylko interfejs, jest to preferowany sposób i jest znacznie czystszy. – orad

Powiązane problemy