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

Sam*_*urn 3 java modularity namespaces typescript

我是一位经验丰富的Java开发人员,需要移植Java应用程序以供Web使用,并且我一直在考虑使用Typescript来做到这一点。目前,我想保持传统的Java样式的软件包是文件夹的层次结构,每个“叶子”文件只有一个类。

我一直在看Typescript文档,并且看到类似的信息../path/to/module。都是这样包括亲戚吗?有某种基本目录选项可以让我得到类似的东西import com.ancient.java.MyType;吗?

另外,是否package com.ancient.java;要在Typescript中声明要执行的操作?

我看了看文档,但是在所有有关内部和外部名称空间以及导出等的讨论中,我发现它们不容易阅读。

有人可以将其简化为类似于Java的东西吗?我敢肯定,以后我会根据需要逐步介绍所有复杂的内容。这在代码中是什么样的?

dta*_*enc 5

完全可以接受甚至鼓励在打字稿中将您的打字稿类按每个文件分为一个类和一个组织好的文件夹层次结构。

如果使用打字稿2.0或更高版本,则您的路径不需要是相对的。您可以使用该baseUrl:属性指定非相对路径(即no ...)的根目录。例如您有:

tsconfig.json 
src/
   foo/
       foo.ts
   bar/
       bar.ts
Run Code Online (Sandbox Code Playgroud)

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

我不鼓励您尝试在Typescript中声明包/命名空间/内部模块等。这些类型的东西大部分都是过去的遗迹,而不是我敢于在新项目中使用的东西。

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

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

例如,您可以MyType使用以下文件结构编写该类:

src/
    com/
        ancient/
            my-type.ts
Run Code Online (Sandbox Code Playgroud)

my-type.ts 看起来像:

export class MyType{
     constructor(){
        console.log('Hello World');
     }
}
Run Code Online (Sandbox Code Playgroud)

然后可以将其导入其他文件,例如:

import {MyType} from 'com/ancient/my-type'
Run Code Online (Sandbox Code Playgroud)

您无需使用关键字namespacemodule。这些大多是只能在类型声明文件中找到的东西。