Module vs Namespace - Importar vs Requer texto datilografado

Estou ficando muito confuso commodule/namespace/export eimport, require, reference uso. Sendo de fundo Java, alguém pode me explicar em poucas palavras quando usar o que e qual é o design certo? Sinto que estou atrapalhando quando estou escrevendo um exemplo de projeto

Até agora, este é o meu entendimento 1.module é para pacotes externos 2.namespace é para pacotes internos

Não entendi como os categorizamos?Quando exportar uma classe ou namespace ou pacote?Se exportarmos pacote / espaço para nome, todas as classes que serão exportadas ou precisarão ser exportadas explicitamenteComo cada um deles pode ser importado / necessário?

De acordo com doc, se estou criando cada arquivo "ts" para cada gerente / modelo, o Typescript não recomenda o uso de "namespaces"? Usar diretamente caminhos de referência?

Por favor, explique em detalhes, como eu sou de formação diferente e não tenho certeza sobre o ES6 / ES5, etc.

Vi várias pessoas levantando / ficando confusas com as mesmas perguntas. Espero que alguém possa explicar em detalhes com o cenário do mundo real

questionAnswers(4)

yourAnswerToTheQuestion