首页
学习
活动
专区
圈层
工具
发布
技术百科首页 >TypeScript >TypeScript 中的模块系统是如何工作的?

TypeScript 中的模块系统是如何工作的?

词条归属:TypeScript

1. 模块的定义

  • 任何包含顶层 import 或 export 语句的文件都被视为模块
  • 模块在自己的作用域内执行,而非全局作用域
  • 没有导入导出语句的文件被视为脚本,其内容在全局作用域中可用

2. ES 模块语法

  • 使用 import 和 export 关键字进行模块的导入和导出
  • 支持命名导出(export const pi = 3.14)和默认导出(export default function)
  • 支持通配符导入(import * as math from "./math")和重命名导入(import { pi as π } from "./math")
  • 支持类型导入(import type { Cat } from "./animal"),仅导入类型而不导入运行时代码

3. CommonJS 语法

  • 使用 module.exports 导出和 require() 导入
  • 主要应用于 Node.js 传统项目
  • TypeScript 可以根据 module 配置选项自动在 ES 模块和 CommonJS 之间转换

4. 模块解析策略

  • 相对路径导入:以 ./ 或 ../ 开头,从当前文件位置解析
  • 非相对路径导入:从 node_modules 中查找,或通过 baseUrl 和 paths 配置的路径别名解析
  • TypeScript 会按顺序查找:.ts、.tsx、.d.ts 文件,或 package.json 中的 types/typings 字段
  • node/node16/nodenext 解析策略模拟 Node.js 的模块解析行为
  • bundler 解析策略适用于 Webpack、Vite 等打包工具

5. 声明文件的模块声明

  • 使用 declare module "module-name" 为没有类型定义的 JavaScript 模块声明类型
  • 可以在声明文件中描述模块的导出结构,实现类型安全
  • 支持通配符声明,如 declare module "*.svg" 匹配所有 SVG 导入
相关文章
TypeScript是如何工作的
TypeScript 是一门基于 JavaScript 拓展的语言,它是 JavaScript 的超集,并且给 JavaScript 添加了静态类型检查系统。TypeScript 能让我们在开发时发现程序中类型定义不一致的地方,及时消除隐藏的风险,大大增强了代码的可读性以及可维护性。相信大家对于如何在项目中使用 TypeScript 已经轻车熟路,本文就来探讨简单探讨一下 TypeScript 是如何工作的,以及有哪些工具帮助它实现了这个目标。
ConardLi
2021-09-29
8K0
TypeScript 模块扩充在 Angular 与 Spartacus 中的工作机制
从 declare module 到 OrderEntry.scheduleLines,彻底理解 TypeScript 模块扩充在 Angular 与 Spartacus 中的工作机制
编程小妖女
2026-08-06
1160
Java中的注解是如何工作的?
自Java5.0版本引入注解之后,它就成为了Java平台中非常重要的一部分。开发过程中,我们也时常在应用代码中会看到诸如@Override,@Deprecated这样的注解。这篇文章中,我将向大家讲述到底什么是注解,为什么要引入注解,注解是如何工作的,如何编写自定义的注解(通过例子),什么情况下可以使用注解以及最新注解和ADF(应用开发框架)。这会花点儿时间,所以为自己准备一杯咖啡,让我们来进入注解的世界吧。
JAVA葵花宝典
2019-05-24
3K0
Java中的注解是如何工作的?
自Java5.0版本引入注解之后,它就成为了Java平台中非常重要的一部分。开发过程中,我们也时常在应用代码中会看到诸如@Override,@Deprecated这样的注解。这篇文章中,我将向大家讲述到底什么是注解,为什么要引入注解,注解是如何工作的,如何编写自定义的注解(通过例子),什么情况下可以使用注解以及最新注解和ADF(应用开发框架)。这会花点儿时间,所以为自己准备一杯咖啡,让我们来进入注解的世界吧。
java思维导图
2019-05-21
3K0
Java中的注解是如何工作的?
自Java5.0版本引入注解之后,它就成为了Java平台中非常重要的一部分。开发过程中,我们也时常在应用代码中会看到诸如@Override,@Deprecated这样的注解。这篇文章中,我将向大家讲述到底什么是注解,为什么要引入注解,注解是如何工作的,如何编写自定义的注解(通过例子),什么情况下可以使用注解以及最新注解和ADF(应用开发框架)。这会花点儿时间,所以为自己准备一杯咖啡,让我们来进入注解的世界吧。
哲洛不闹
2019-05-13
2.7K0
点击加载更多
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
领券