传统文件夹层次结构中的 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 模块等。这些类型的东西大多是过去的遗物,而不是我会冒险在新项目中使用的东西。
我建议坚持使用基于文件的模块,因为这是现代推荐的编写应用程序的方法。
具有 import
或 export
语句的文件被视为 "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'
您不需要使用关键字 namespace
或 module
。这些大多只能在类型声明文件中找到。
我是一名经验丰富的 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 模块等。这些类型的东西大多是过去的遗物,而不是我会冒险在新项目中使用的东西。
我建议坚持使用基于文件的模块,因为这是现代推荐的编写应用程序的方法。
具有 import
或 export
语句的文件被视为 "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'
您不需要使用关键字 namespace
或 module
。这些大多只能在类型声明文件中找到。