TypeScript 中 export 用于导出类、接口、类型别名等供其他模块使用;类可默认或具名导出,接口和类型别名必须具名 export 且仅参与编译检查,不生成运行时代码。

在 JavaScript(特别是 TypeScript 环境下)中,export 用于对外暴露类、接口等类型定义,供其他模块导入使用。注意:纯 JavaScript 不支持接口(interface),接口是 TypeScript 特性,需经编译后才能运行;而类(class)在 JS 中原生支持,可直接导出。
导出类(Class)
类可以默认导出或具名导出:
-
具名导出:适合一个文件导出多个类或类型,导入时需用大括号
{}
export class User {
constructor(public name: string, public age: number) {}
}
<p>export class Admin extends User {
role = 'admin';
}导入时:
立即学习“Java免费学习笔记(深入)”;
import { User, Admin } from './user';- 默认导出:每个模块最多一个,默认导出不带大括号
export default class UserService {
getUsers() { return []; }
}导入时:
立即学习“Java免费学习笔记(深入)”;
import UserService from './service'; // 无大括号
导出接口(Interface)——仅 TypeScript
接口只参与编译时类型检查,不生成运行时代码,但必须显式 export 才能在其他文件中 import 类型:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
export interface ApiResponse<T> {
code: number;
data: T;
message?: string;
}
<p>export interface User {
id: number;
name: string;
}导入类型时,推荐加 type 前缀(TypeScript 5.0+ 支持,提升可读性与工具链兼容性):
import type { ApiResponse, User } from './types';若同时需要值和类型(如导出类 + 接口),可混合使用,无需额外修饰:
export class UserImpl implements User {
id = 1;
name = 'Alice';
}
export interface User { id: number; name: string; }导出类型别名(Type Alias)和联合类型
和接口类似,类型别名也需 export 才能跨文件使用:
export type Status = 'active' | 'inactive';
export type UserRecord = { id: number } & User;导入方式同接口:
import type { Status, UserRecord } from './types';批量导出与重导出(Re-export)
常用在入口文件(如 index.ts)中聚合导出:
// types/index.ts
export { User, ApiResponse } from './user';
export { Status } from './constants';
export * as utils from './helpers'; // 将 helpers 中所有具名导出挂载为 utils.xxx这样外部只需导入一个路径即可获取多个定义:
import { User, ApiResponse, Status } from './types';不复杂但容易忽略:接口和类型别名必须用 export(不能用 export default),且运行时不会保留;类导出则既有类型信息也有运行时行为。按需选择具名或默认导出,保持项目风格统一即可。

















