我是一名经验丰富的Java开发人员,需要移植Java应用程序以供Web使用,而且我一直在考虑使用Typescript来实现这一目标。目前,我希望将传统的Java风格的包保持为文件夹的层次结构,并且每个" leaf"文件。
我一直在查看Typescript文档,我看到像../path/to/module
这样的内容。这些都是相对的吗?是否有某种基本目录选项,我可以获得类似于import com.ancient.java.MyType;
的内容?
另外,在Typescript中声明要package com.ancient.java;
要做什么?
我查看了文档,但我发现内部和外部名称空间和导出等所有内容都不容易阅读。
有人可以把它归结为让我觉得Java开始的东西吗?我确定我会在以后根据需要介入所有复杂的东西。这在代码中是什么样的?
答案 0 :(得分:5)
将打字稿类组织成每个文件1级,有组织的文件夹层次结构是完全可以接受的,甚至可以用打字稿来鼓励。
如果使用typescript 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
。这些主要是只能在类型声明文件中找到的东西。