Во время работы с Typescript я понял, что мои классы в модулях (используемых в качестве пространств имен) были недоступны для других классов, если я не написал export
перед ними ключевое слово, например:
module some.namespace.here
{
export class SomeClass{..}
}
Итак, теперь я могу использовать приведенный выше код следующим образом:
var someVar = new some.namespace.here.SomeClass();
Однако мне просто было интересно, почему это ключевое слово используется вместо того, чтобы просто использовать public
ключевое слово, которое используется на уровне метода для обозначения того, что метод или свойство должны быть доступны извне. Так почему бы просто не использовать тот же механизм, чтобы сделать классы, интерфейсы и т. Д. Внешне видимыми?
В результате получится такой код:
module some.namespace.here
{
public class SomeClass{..}
}
К ответу Стива Фентона можно добавить несколько вещей:
export
уже означает две разные вещи (в зависимости от того, на верхнем уровне или нет); это означает, что треть, вероятно, хуже, чем добавлениеpublic
/private
public
vsexport
тривиальна. Мы уже изменили несколько ключевых слов; это не трудно.export
(unexport
??) нет подходящего антонима , поэтомуprivate
выбор является логичным. После того, как вы это сделалиprivate
, было бы безумием не выбрать вpublic
качестве его аналогаexport
для изменения видимости во внутренних модулях - лучший вариант согласования с модулями ES6.источник
export class User { name: string }
Другой файл:import {User} from ""./the_file_path_to_the_user_class;
см. раздел 3.3 документации по nativescript здесь docs.nativescript.org/angular/tutorial/ng-chapter-3import
указание "это значение не экспортируется " в качестве подходящего использования ключевого слова?