我是一个经验丰富的Java开发人员,需要移植Java应用程序以供Web使用,我一直在考虑使用Typescript来实现这一点.目前,我希望将传统的Java风格的包保持为文件夹的层次结构和每个“叶”文件的单个类.
我一直在查看Typescript文档,我看到像../path/to/module这样的东西.这些都是相对的吗?是否有某种基本目录选项,我可以得到类似于导入com.ancient.java.MyType;?
另外,正在声明一个包com.ancient.java;在Typescript中要做些什么?
我查看了文档,但是我发现内部和外部名称空间和导出等所有内容都不容易阅读.
有人可以把它归结为让我感觉像Java一样的东西吗?我确定我会在以后根据需要介入所有复杂的东西.这在代码中是什么样的?
解决方法:
将打字稿类组织成每个文件1级和有组织的文件夹层次结构是完全可以接受的,甚至可以在打字稿中进行鼓励.
如果使用typescript 2.0或更高版本,则路径不需要是相对的.您可以使用baseUrl:属性指定非相对(即无或……)路径的根.比如你有:
tsconfig.json
src/
foo/
foo.ts
bar/
bar.ts
你可以设置“baseUrl”:“./ src”然后你可以导入’foo / foo’并导入’bar / bar’而不使用相对路径导航.
我不鼓励你试图在打字稿中声明包/名称空间/内部模块等.这些类型的东西大多是过去的遗物,而不是我想冒险在新项目中使用的东西.
我建议坚持使用基于文件的模块,因为这是用于编写应用程序的现代推荐方法.
具有导入或导出语句的文件被视为“文件模块”.其中定义的所有内容都是文件专用的,不会污染全局命名空间.需要共享的内容需要从其他文件导出和导入.
例如,您可以在文件结构中编写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'
您不应该使用关键字命名空间或模块.这些主要是只能在类型声明文件中找到的东西.