0Pricing
TypeScript Academy · 课时

仅用于类型的导入与导出

使用 import type 避免运行时开销

仅用于类型的导入与导出 是 CoddyKit 上的免费 TypeScript Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 TypeScript Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 TypeScript Academy 课程共包含 4 节课。

欢迎

仅类型导入和导出(import type / export type)是在 TypeScript 3.8 中引入的,让开发者可以明确控制哪些是运行时依赖,哪些仅是类型。

仅类型导入为何重要

常规导入可能包含运行时代码。如果您只需要类型,编译后的输出中可以完全删除该导入。
import { User } from './models'; // includes runtime binding
import type { User } from './models'; // compile-time only, erased

import type 的语法

将 `type` 放在 `import` 关键字之后。您不能将导入的名称用作值。
import type { ApiResponse } from './api-types';

function handleResponse(res: ApiResponse<User>): void {
  // ApiResponse used as type annotation only
}

export type 的语法

使用 `export type` 明确将导出标记为仅类型导出。
// user.types.ts
export type UserId = string;
export type { User, UserRole };

内联类型导入

TypeScript 4.5 及更高版本允许在常规导入语句中,将单个导入标记为仅类型导入。
import { type User, createUser } from './user';
// User is type-only, createUser is a runtime value

解决循环依赖

仅类型导入不会创建运行时绑定,因此可以解决循环依赖问题。

verbatimModuleSyntax

TypeScript 5.0 引入了 `verbatimModuleSyntax`。启用后,您必须对仅类型导入使用 `import type`,以避免打包工具产生混淆。
// tsconfig.json
{ "compilerOptions": { "verbatimModuleSyntax": true } }

importsNotUsedAsValues

`importsNotUsedAsValues` 编译器选项(已由 verbatimModuleSyntax 取代)控制 TypeScript 如何处理未使用的值导入。

对打包工具的好处

Vite 和 esbuild 等打包工具会使用 `import type` 标记来跳过类型导入的处理,从而提高构建速度。

仅类型重新导出

重新导出类型,而不包含其运行时模块。
// public-api.ts
export type { User, UserRole } from './internal-user';
export { createUser } from './internal-user'; // runtime

错误:不能将 import type 用作值

将仅类型导入用作运行时值会导致编译错误。
import type { User } from './user';
// const u = new User(); // Error — User was imported as type-only

快速检查

什么时候应该使用 `import type`,而不是常规的 `import`?

回顾

对于仅类型的导入和导出,请使用 `import type` 和 `export type`。它们会在编译时被删除,避免对类型文件产生运行时依赖,并且在启用 verbatimModuleSyntax 时是必需的。

常见问题解答

「仅用于类型的导入与导出」课时是免费的吗?

是的 — 「仅用于类型的导入与导出」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 TypeScript Academy 课程的其余内容,请升级到 CoddyKit PRO。 TypeScript Academy 课程共包含 4 节课。

「仅用于类型的导入与导出」这节课中我会学到什么?

使用 import type 避免运行时开销 你通过在浏览器中直接运行的动手代码来练习 TypeScript Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 TypeScript Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 TypeScript Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「仅用于类型的导入与导出」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 TypeScript Academy 课中编写并运行代码吗?

能。每节 TypeScript Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. ES 模块语法:import 与 export
  2. 重新导出与集中导出文件
  3. 仅用于类型的导入与导出
  4. 命名空间与模块:现代用法
← 返回 TypeScript Academy