欢迎光临散文网 会员登陆 & 注册

TypeScript 模块系统

2023-08-08 16:42 作者:没用软件开发日记  | 我要投稿

  在TypeScript中,和ECMAScript 2015一样,任何包含顶级导入或导出的文件都被认为是一个模块。相反,没有任何顶级导入或导出声明的文件被视为脚本(script,意义为js逻辑片段),其内容可在全局作用域中使用(因此也可用于模块)。

    脚本暴露在全局作用域的var变量会追加到window上,可以通过window.xxx访问;而使用const、let声明的变量仅仅存在于全局作用域中无法通过window.xxx访问,但是可以直接使用变量名使用。

   模块在它们自己的作用域中执行,而不是在全局作用域中执行。这意味着在模块中声明的变量、函数、类等在模块外部是不可见的,除非它们使用导出标识符显式导出。相反,要使用从不同模块导出的变量、函数、类、接口等,必须使用导入语法导入。

    ES模块的知识不再赘述下面讲解一下TypeScript的模块系统。

    TypeScript类型系统的成员几乎都无法编译成JS代码,但是在编码阶段的类型检查依赖于类型系统提供的线索,所以就出现了TS模块系统独有的“类型引入”,我们可以和ES模块一样通过“import”引入interface、type、class,也就是说我们可以混合引入ES对象和TS类型成员。为了方便打包框架解析我们可以使用type标识符将TS类型系统的成员,从而将ES对象和TS对象分开对待。

    上述示例解释了type关键字的使用方法,对于纯类型引入我们可以将type关键字置于imort之后,表示引入的都是TS类型系统成员;对于不全都是类型的引入我们可以在类型前单独标记type。type的意义在于表示仅作为类型标注使用,如果参与实例化(new class)则会报错,且打包工具可以完全忽略此导入。



TypeScript 模块系统的评论 (共 条)

分享到微博请遵守国家法律