Podczas zabawy z Typescriptem zdałem sobie sprawę, że moje klasy w modułach (używane jako przestrzenie nazw) nie były dostępne dla innych klas, chyba że napiszę export
przed nimi słowo kluczowe, takie jak:
module some.namespace.here
{
export class SomeClass{..}
}
Więc teraz mogę użyć powyższego kodu w ten sposób:
var someVar = new some.namespace.here.SomeClass();
Zastanawiałem się jednak, dlaczego to słowo kluczowe jest używane, a nie tylko public
słowo kluczowe, które jest używane na poziomie metody do oznaczenia, że metoda lub właściwość powinny być dostępne z zewnątrz. Dlaczego więc nie użyć tego samego mechanizmu, aby uczynić klasy, interfejsy itp. Zewnętrznie widocznymi?
Dałoby to wynikowy kod, taki jak:
module some.namespace.here
{
public class SomeClass{..}
}
źródło
Kilka rzeczy do dodania do odpowiedzi Steve'a Fentona:
export
już oznacza dwie różne rzeczy (w zależności od tego, czy jest na najwyższym poziomie, czy nie); co oznacza, że jedna trzecia jest prawdopodobnie gorsza niż dodaniepublic
/private
public
vsexport
jest trywialna. Zmieniliśmy już kilka słów kluczowych; to nie jest trudne.export
(unexport
??), więcprivate
jest to logiczny wybór. Gdy już to zrobiszprivate
, byłoby szaleństwem nie wybieraćpublic
swojego odpowiednikaexport
do modyfikacji widoczności w modułach wewnętrznych jest najlepszym przypuszczeniem wyrównania z modułami ES6źródło
export class User { name: string }
Inny plik:import {User} from ""./the_file_path_to_the_user_class;
zobacz sekcję 3.3 dokumentacji języka ojczystegoimport
określenia „ta wartość nie jest eksportowana ” byłoby odpowiednim użyciem słowa kluczowego?