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

TypeScript class in traditional folder hierarchy

我是一名经验丰富的 Java 开发人员,需要移植一个 Java 应用程序供网络使用,我一直在考虑使用 Typescript 来完成这项工作。目前,我想保留传统的 Java 包样式,即文件夹层次结构和每个 "leaf" 文件一个 class。

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

的内容

此外,是否正在声明 package com.ancient.java; 需要在 Typescript 中完成的事情?

我查看了文档,但我发现它们并不容易阅读,因为所有关于内部和外部名称空间以及导出等的讨论

有人可以将其归结为让我觉得 Java 开始的东西吗?我敢肯定,我稍后会根据需要逐步了解所有复杂的内容。这在代码中是什么样子的?

将您的打字稿 classes 组织成每个文件 1-class 和有组织的文件夹层次结构是完全可以接受的,甚至在打字稿中受到鼓励。

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

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

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

我不鼓励您尝试在打字稿中声明 packages/namespace/internal 模块等。这些类型的东西大多是过去的遗物,而不是我会冒险在新项目中使用的东西。

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

具有 importexport 语句的文件被视为 "file module"。其中定义的所有内容都是文件私有的,不会污染全局命名空间。应该共享的东西需要从其他文件导出和导入。

例如,您可以在这样的文件结构中编写 MyType class:

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。这些大多只能在类型声明文件中找到。