TypeScript 模块系统
发布时间:2023-08-08 16:49:47 文章来源:哔哩哔哩
在TypeScript中,和ECMAScript2015一样,任何包含顶级导入或导出的文件


(资料图片仅供参考)

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

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

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

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

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

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

关键词:

最近更新

热门推荐HOT

猜你喜欢LOVE