为了账号安全,请及时绑定邮箱和手机立即绑定

typeScript中关于模块导出导入的问题

typeScript中关于模块导出导入的问题

holdtom 2018-10-18 10:05:34
在看 typeScript的模块这个节的时候,我觉得这个导入导出是个非常神奇的事情。之前一般的js都是通过js标签的src属性来引入js文件的,从而加载进相应的js程变量,函数方法什么的。后来出现模块化的概念,从模块化这个名词又开始向命名空间这个概念转。简单的来讲,我觉得所谓的模块,其实就是每个单独的文件。我们要导入某个模块实际也就是引入某个文件夹一样,而这跟之前纯粹的通过js标签引入js文件应该是同一个道理,只是概念上有了改变。在看typescript的官网文档的 模块导入导出的时候,讲到一个重新导出 ,我觉得很神奇,我开始觉得,只能在当前的文件里导出当前文件的内容,比如导出 变量,导出 语句的那些写法,都是在本模块文件里面导出本文件里的内容的。但是这里的 讲到的重新导出,我看他是意思好像是,能够在其自身的文件里控制导出其他模块里的内容。我觉得太神奇了。既然本文件里面导出的内容能被其他文件中相应的导出语句所改变,那名字一改,这导出的东西名称会不会有冲突?而后来导入里面有个地方不是很理解。import * as validator from "./ZipCodeValidator";let myValidator = new validator.ZipCodeValidator();在这里 new 这个词我该怎样理解??? new配合构造函数的的调用 本来是实例化对象的意思,在这里我的理解只能是,通过new 他把整个引入的文件当成个对象,自然里面的 变量,函数方法什么的就成了他的属性了。所以才能这样写new validator.ZipCodeValidator();
查看完整描述

1 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

我也是ts初学者,我说说我的理解
其实ts的导入导出,和ES6是很像的,你说的重新导出,其实就是ES6中的export xxx from '/xxx',我不一定需要这个模块全部的功能啊,我可能只要一部分
如果是CommonJS风格,那就是这种require 'xxx',它就必需引入全部代码了,你可以参考阮一峰的ES6入门

然后你说的第二个问题,其实validator是模块名,ZipCodeValidator()就是其中的一个构造函数,模块其实不一定是个对象,可能是函数,可能是字符串,甚至可能就只是个数字,但这里它没错就是个对象,而且一般我们都是export一个对象


查看完整回答
反对 回复 2018-11-02
  • 1 回答
  • 0 关注
  • 2104 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信