架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5353|回复: 0

[TypeScript] Typescrip{过滤}t模块的导入和导出

[复制链接]
发表于 2018-10-22 17:21:45 | 显示全部楼层 |阅读模式
在ECMAscrip{过滤}t 2015标准里,Javascrip{过滤}t新增了模块的概念。Typescrip{过滤}t也沿用了这个概念。

一、模块的导入和导出

模块在其自身的作用域里执行,而不是在全局作用域里;这意味着定义在一个模块里的变量,函数,类等等在模块外部是不可见的,除非你明确地使用export之一导出它们。 相反,如果想使用其它模块导出的变量,函数,类,接口等的时候,你必须要导入它们,可以使用import之一。

模块是自声明的。在Typescrip{过滤}t里,两个模块之间的关系是通过在文件级别上使用import和export建立的。下面是一个基本例子:

animal.ts

app.ts

上面的例子里,在animal.ts里声明了一个类Animal,通过export导出。在app.ts里,指定相对文件路径,通过import导入,就可以使用Animal类。

因为Javascrip{过滤}t存在两种不同的模块引用方式,在编译成Javascrip{过滤}t时,可以通过Typescrip{过滤}t配置文件tsconfig.json指定编译之后的模块引用方式

下面分别是使用不同的方式编译后的Javascrip{过滤}t文件内容

commonjs

amd


二、导入和导出的重命名

模块导入和导出时默认使用的内部对象的名称。Typescrip{过滤}t也支持在导出前和导入后进行重命名。将上面的例子修改一下

animal.ts

app.ts

导入和导出时,通过as关键字对模块进行重命名。

这个地方有一点要注意,当导出的模块重命名后,导入时重命名前的模块名要与导出重命名后的模块名保持一致,否则编译器将提示错误信息。以上面的这个例子为例,导出的模块被重命名为ANI,将此模块在另外一个文件app.ts里导入时,as关键字前面的模块名必须是ANI。

或者,如果不知道导入模块的名称,则可以用*号代替

上面的例子里,对*号代替的所有模块进行重命名为animal_module,则通过animal_module对象可以访问到模块里导出的所有内容。

三、导出和导出多个对象

通常情况,模块里会定义多个类型对象,然后一并导出。而导入的模块里也可能会有多个

animal.ts

app.ts

导出时,可以将要导出的类型对象重新组装成一个json对象,然后导出。导入后,可以通过重命名的模块对象访问里面的内容。

四、默认导出

一个模块的默认导出只能有一个

animal.ts

app.ts

在上面的例子里,通过default关键字,将Animal类导出。与一般的导入不同的是,导入默认的导出模块时,可以直接指定导入的模块名称,而不需要用{}花括号括起来。

五、动态加载模块

因为在Javascrip{过滤}t里,模块加载方式分别有两种:CommonJS和AMD。在用Typescrip{过滤}t时,要根据最终编译生成Javascrip{过滤}t的方式的配置内容不同,编写不同的代码。

模块文件animal.ts

CommonJS方式引用:

app.ts

AMD方式引用:

app.ts







上一篇:博纳云(BonusCloud)抢激活码工具[附源码]
下一篇:新人报道,请问MB怎么得
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-19 12:37

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表