2016-10-30 3 views
2

Я опытный Java-разработчик, которому необходимо перенести приложение Java для использования в Интернете, и я рассматривал возможность использования машинописных файлов для этого. В настоящее время я хочу, чтобы традиционный стиль Java-пакетов представлял собой иерархию папок и один класс для каждого «листового» файла.Класс TypeScript в традиционной иерархии папок

Я смотрел документы с машинописным текстом, и я вижу такие вещи, как ../path/to/module. Все ли такие относительные? Есть ли какая-то опция базового каталога, где я могу получить что-то похожее на import com.ancient.java.MyType;?

Кроме того, объявляется package com.ancient.java; что-то, что нужно сделать в машинописном машиностроении?

Я просмотрел документы, но я не найти их легко читать все разговоры о внутренних и внешних пространств имен и экспорта, и т.д.

Может кто-то кипятить это вниз к чему-то, что будет чувствовать себя как Java для меня, чтобы начать с? Я уверен, что, если понадобится, я буду входить во все сложные вещи позже. Как это выглядит в коде?

ответ

4

Организация классов типов в 1 класс для каждого файла и организованная иерархия папок вполне приемлема и даже поощряется в машинописи.

Если использование машинописных версий 2.0 или выше ваших путей не обязательно должно быть относительным. Вы можете использовать свойство baseUrl:, чтобы указать, где расположены пути, не относящиеся к относительным (то есть нет . или ..). К примеру вас было:

tsconfig.json 
src/ 
    foo/ 
     foo.ts 
    bar/ 
     bar.ts 

вы можете установить "baseUrl": "./src" и тогда вы могли бы import 'foo/foo' и import 'bar/bar' без использования относительного пути навигации.

Я бы отговорил вас от попыток объявить пакеты/пространства имен/внутренние модули и т. П. В машинописи. Эти типы вещей в основном являются реликтами прошлого, а не то, что я бы рискнул использовать в новом проекте.

Что я хотел бы рекомендовать, это придерживаться файловых модулей, так как это современный рекомендованный подход для составления вашего приложения.

Файл с import или export утверждениями считается «файловым модулем». Все, что определено в нем, является частным файлом и не загрязняет глобальное пространство имен. Вещи, которые должны быть разделены, должны быть экспортированы и импортированы из других файлов.

Например, вы могли бы написать MyType класс в файловой структуре, как это:

src/ 
    com/ 
     ancient/ 
      my-type.ts 

my-type.ts Посмотрел бы, как:

export class MyType{ 
    constructor(){ 
     console.log('Hello World'); 
    } 
} 

, а затем вы можете импортировать его в другие файлы, такие как:

import {MyType} from 'com/ancient/my-type' 

Вам не нужно использовать ключ слова namespace или module. Это в основном вещи, которые будут найдены только в файлах декларации типов.

+0

Пара второстепенных точек. Один, «внешние модули» - это точно модули ES2015, и их не следует обескураживать. Два, 'declare module' все еще часто используются в .d.ts, а не только устаревшие. – Paarth

+0

Вы правы, хотя их больше не называют «внешними модулями». Хотя официально они просто «модуль», мне нравится называть их «файловыми модулями», чтобы подчеркнуть, что сам файл является модулем и не использует «decalre module». Вы также правы о потенциальном использовании в современных файлах декларации. Я думал об одном конкретном использовании, а не о других, таких как возможность повторно открыть модуль и увеличить его типы. Я сделал соответствующие изменения, чтобы избежать путаницы. – dtabuenc

Смежные вопросы