传统文件夹层次结构中的TypeScript类

时间:2016-10-30 02:20:31

标签: java typescript namespaces modularity

我是一名经验丰富的Java开发人员,需要移植Java应用程序以供Web使用,而且我一直在考虑使用Typescript来实现这一目标。目前,我希望将传统的Java风格的包保持为文件夹的层次结构,并且每个" leaf"文件。

我一直在查看Typescript文档,我看到像../path/to/module这样的内容。这些都是相对的吗?是否有某种基本目录选项,我可以获得类似于import com.ancient.java.MyType;的内容?

另外,在Typescript中声明要package com.ancient.java;要做什么?

我查看了文档,但我发现内部和外部名称空间和导出等所有内容都不容易阅读。

有人可以把它归结为让我觉得Java开始的东西吗?我确定我会在以后根据需要介入所有复杂的东西。这在代码中是什么样的?

1 个答案:

答案 0 :(得分:5)

将打字稿类组织成每个文件1级,有组织的文件夹层次结构是完全可以接受的,甚至可以用打字稿来鼓励。

如果使用typescript 2.0或更高版本,则路径不需要是相对路径。您可以使用baseUrl:属性指定非相对(即没有...)路径的根。比如你有:

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

您可以设置"baseUrl": "./src",然后您可以import 'foo/foo'import 'bar/bar'而不使用相对路径导航。

我不鼓励你尝试在打字稿中声明包/命名空间/内部模块等。这些类型的东西大多是过去的遗物,而不是我想冒险在新项目中使用的东西。

我建议坚持使用基于文件的模块,因为这是构建应用程序的现代推荐方法。

具有importexport语句的文件被视为“文件模块”。其中定义的所有内容都是文件专用的,不会污染全局命名空间。需要共享的内容需要从其他文件导出和导入。

例如,您可以在文件结构中编写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'

您不应该使用关键字namespacemodule。这些主要是只能在类型声明文件中找到的东西。