Wpis z mikrobloga

#webdev #javascript

Mam projekt w Typescript pisany + lekka konfiguracja webpacka

1 glowny plik w ktorym jest wiekszosc logiki
2 pliki z samymi klasami ktore exportuje

problem jest taki, ze jedna z tych klas w plikach podrzednych uzywa instancji drugiej klasy, w sumie nawet nie wiem czy tak sie powinno robic, zeby sie odnosic bezposrednio do instancji jakiejs klasy w innej klasie, no ale tak mam zrobione

a wiec tamte 2 klasy z podrzednych plikow exportuje i importuje je w jednym glownym pliku

tylko problem jest taki, ze przy kompilacji mi wywala errory 'cannot find name "nazwa klasy"'

//main.ts

import { Class } from './class1';
import { Class2 } from './class2';

var class1 = new Class();
var class2 = new Class2();

//class1.ts

export class Class1 {

}

//class2.ts

export class Class 2 {

class1.costam(); <-- wywala error

}
  • 2
@Melcma: Wywala ci bład bo nie możesz czegoś takiego zrobić. Nie możesz założyć że w pliku class2.ts będziesz mieć dostęp do jakiejś zmiennej z dupy. Oto co możesz zrobić:

1. Zaimportować klasę Class1 do pliku class2.ts i tam stworzyć instancję
2. Przekazać instancję Class1 do konstruktora klasy Class2, wtedy ta instancja będzie sobie korzystać z niej jak chce
3. Zadeklarować w środku pliku class2 zmienną class1 - ale tego masz nie
@Melcma:

Ja jeszcze tylko rozwinę myśl kolegi @Marmite

Nie możesz założyć że w pliku class2.ts będziesz mieć dostęp do jakiejś zmiennej z dupy.


Dokładniej mówiąc to każdy MODUŁ (czyli plik .ts) ma swoją własną przestrzeń i nie masz dostępu z do elementów z innego modułu i tu nie chodzi tylko o zmienne ale równierz funkcje, typy, klasy, interfejsy itp. Po to masz słowa kluczowe import i export żeby wybiórczo pobierać/zwracać elementy