程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • TypeScript

    • TypeScript - 介绍
    • TypeScript - 安装和使用
    • TypeScript - 基本类型
    • TypeScript - 编译和配置
    • TypeScript - 文件打包
    • TypeScript - 接口
    • TypeScript - 函数
    • TypeScript - 类
    • TypeScript - 泛型
    • TypeScript 的导入导出
      • 导出
        • 1. 默认导出 (export default)
        • 2. 命名导出 (export)
        • 3. 类型导出 (export type)
      • 导入
        • 1. 导入默认导出 (import)
        • 2. 导入命名导出 (import)
        • 3. 导入所有命名导出 (import *)
        • 4. 导入类型 (import type)
        • 5. 混合导入 (import 与 import type)
      • 重新导出 (export from)
      • 导入导出总结
    • TypeScript - 类型推断
    • TypeScript - 高级类型
  • JS 超集语言 - TypeScript
  • TypeScript
scholar
2024-08-05
目录

TypeScript 的导入导出

# TypeScript - 导入导出

在 TypeScript 中,导入和导出模块是通过 import 和 export 关键字实现的。TypeScript 扩展了 ES6 (ECMAScript 2015) 模块系统,并增加了一些额外的功能,如类型导入等。以下是 TypeScript 导入导出的语法和详细说明。

# 导出

# 1. 默认导出 (export default)

  • 用于导出一个模块的默认值。一个模块只能有一个默认导出。
// greet.ts
// 导出一个函数作为默认导出
export default function greet() {
  console.log('Hello, world!');
}
1
2
3
4
5

# 2. 命名导出 (export)

  • 用于导出多个变量、函数、类或接口。一个模块可以有多个命名导出。
// module.ts
// 导出变量、函数和类
export const name = 'TypeScript';
export function greet() {
  console.log('Hello, world!');
}
export class Person {
  constructor(public name: string) {}
}
1
2
3
4
5
6
7
8
9

# 3. 类型导出 (export type)

  • 用于导出类型别名或接口。仅在类型检查时使用,不会在运行时生成代码。
// types.ts
// 导出接口和类型别名
export interface Person {
  name: string;
  age: number;
}
export type Persons = Array<Person>;
1
2
3
4
5
6
7

# 导入

# 1. 导入默认导出 (import)

  • 用于导入模块的默认值。
// main.ts
// 导入默认导出
import greet from './greet';
greet(); // 输出:Hello, world!
1
2
3
4

# 2. 导入命名导出 (import)

  • 用于导入模块中的一个或多个命名导出。
// main.ts
// 导入命名导出
import { name, greet, Person } from './module';
console.log(name); // 输出:TypeScript
greet(); // 输出:Hello, world!
const person = new Person('John');
console.log(person.name); // 输出:John
1
2
3
4
5
6
7

# 3. 导入所有命名导出 (import *)

  • 用于将模块中的所有命名导出导入为一个对象。
// main.ts
// 导入所有命名导出
import * as Module from './module';
console.log(Module.name); // 输出:TypeScript
Module.greet(); // 输出:Hello, world!
const person = new Module.Person('John');
console.log(person.name); // 输出:John
1
2
3
4
5
6
7

# 4. 导入类型 (import type)

  • 用于显式地导入类型,仅在编译时有效,不会在运行时生成代码。TypeScript 3.8 引入的特性。
  • 有两种写法:
// 第一种写法
import type { Person, Persons } from './types';

// 第二种写法
import { type Person, type Persons } from './types';
1
2
3
4
5

# 5. 混合导入 (import 与 import type)

  • 可以在同一个导入语句中同时导入值和类型。
// main.ts
// 混合导入值和类型
import { Person, type Persons } from './types';
1
2
3

# 重新导出 (export from)

  • 用于将导入的模块重新导出。
// reexport.ts
// 重新导出模块的默认导出
export { default } from './greet';

// 重新导出模块的命名导出
export { name, greet, Person } from './module';

// 重新导出模块中的所有命名导出
export * from './module';
1
2
3
4
5
6
7
8
9

# 导入导出总结

  • 默认导出 (export default):一个模块只能有一个默认导出。
  • 命名导出 (export):一个模块可以有多个命名导出。
  • 类型导出 (export type):仅用于类型导出,不会在运行时生成代码。
  • 导入默认导出 (import):用于导入默认导出。
  • 导入命名导出 (import):用于导入一个或多个命名导出。
  • 导入所有命名导出 (import *):用于将所有命名导出导入为一个对象。
  • 导入类型 (import type):显式导入类型,仅在编译时有效,有两种写法:
    • import type { Person, Persons } from './types';
    • import { type Person, type Persons } from './types';
  • 混合导入 (import 与 import type):在同一导入语句中同时导入值和类型。
  • 重新导出 (export from):用于将导入的模块重新导出。

通过这些语法和特性,TypeScript 提供了灵活和强大的模块管理能力,使得代码的组织和复用更加方便和高效。

编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08
TypeScript - 泛型
TypeScript - 类型推断

← TypeScript - 泛型 TypeScript - 类型推断→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式