TypeScript的export用法

TypeScript 中,export 用于将模块中的变量、函数、类、类型等暴露给外部使用。export 语法允许将模块化的代码分割并在其他文件中导入。

1. 命名导出(Named Export)

命名导出是 TypeScript 中最常见的一种导出方式,它允许你导出多个实体,导入时需要使用相同的名字。

语法
export { <entity1>, <entity2>, ... };

或者直接在声明时进行导出:

export <entity>;
示例
// math.ts
export const PI = 3.14159;export function add(x: number, y: number): number {return x + y;
}export class Calculator {static multiply(x: number, y: number): number {return x * y;}
}

然后在其他文件中导入:

// app.ts
import { PI, add, Calculator } from './math';console.log(PI);  // 3.14159
console.log(add(2, 3));  // 5
console.log(Calculator.multiply(2, 3));  // 6
部分导入

你也可以选择只导入你需要的部分:

// app.ts
import { add } from './math';console.log(add(5, 3));  // 8
别名导入

你可以为导入的命名实体指定别名:

// app.ts
import { add as sum, Calculator as Calc } from './math';console.log(sum(2, 3));  // 5
console.log(Calc.multiply(2, 3));  // 6

2. 默认导出(Default Export)

默认导出用于导出模块中的单个实体,每个模块只能有一个默认导出。在导入时不需要使用花括号,可以自定义导入名称。

语法
export default <entity>;
示例
// greet.ts
export default function greet(name: string): string {return `Hello, ${name}!`;
}

然后在其他文件中导入并使用:

// app.ts
import greet from './greet';console.log(greet("Alice"));  // Hello, Alice!

3. 混合使用命名导出与默认导出

你可以在一个模块中同时使用命名导出和默认导出:

// utils.ts
export function add(x: number, y: number): number {return x + y;
}export function subtract(x: number, y: number): number {return x - y;
}export default function multiply(x: number, y: number): number {return x * y;
}

然后可以这样导入:

// app.ts
import multiply, { add, subtract } from './utils';console.log(multiply(2, 3));  // 6
console.log(add(2, 3));       // 5
console.log(subtract(5, 3));  // 2

4. 重命名导出(Export Aliases)

你可以在导入时或导出时使用别名。

导出时重命名
// math.ts
const PI = 3.14159;function add(x: number, y: number): number {return x + y;
}// 使用 `as` 来重命名导出的符号
export { PI as PiValue, add as addNumbers };
导入时重命名
// app.ts
import { PiValue, addNumbers } from './math';console.log(PiValue);       // 3.14159
console.log(addNumbers(5, 3));  // 8

5. 导出整个模块(Re-export)

你可以将另一个模块的所有内容导出到当前模块中。这对于模块的组合和封装非常有用。

示例
// math.ts
export const PI = 3.14159;export function add(x: number, y: number): number {return x + y;
}// geometry.ts
export * from './math';  // 将math模块的所有导出都重新导出// app.ts
import { PI, add } from './geometry';console.log(PI);  // 3.14159
console.log(add(2, 3));  // 5

6. 导出类型(Type Export)

除了导出变量、函数和类,TypeScript 还允许导出类型别名、接口等类型定义。

示例
// types.ts
export interface Person {name: string;age: number;
}export type Point = { x: number; y: number };// app.ts
import { Person, Point } from './types';const john: Person = { name: "John", age: 30 };
const point: Point = { x: 10, y: 20 };

7. export =import = require() 的用法

export =import = require() 语法主要用于与旧版 JavaScript 模块(如 CommonJS)兼容。当你希望以 CommonJS 风格导出模块时,可以使用 export =

示例
// logger.ts
class Logger {log(message: string) {console.log(message);}
}export = Logger;
// app.ts
import Logger = require('./logger');const logger = new Logger();
logger.log('Hello, World!');

这种用法较少见,因为大多数 TypeScript 代码会使用 exportimport 语法。

总结

  • export 用于将模块中的代码暴露出去,可以导出函数、类、常量、类型等。
  • export default 用于导出模块中的单个实体,导入时不需要花括号,并且可以自定义导入名称。
  • 命名导出与默认导出 可以结合使用,一个模块可以有多个命名导出和一个默认导出。
  • export = 用于与 CommonJS 等旧版模块系统兼容。

exportimport 使得 TypeScript 支持模块化,帮助你组织和分离代码,提高代码的可维护性和复用性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/914914.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/914914.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构-2(链表)

一、思维导图二、链表的反转def reverse(self):"""思路&#xff1a;1、设置previous_node、current、next_node三个变量,目标是将current和previous_node逐步向后循环并逐步进行反转,知道所有元素都被反转2、但唯一的问题是&#xff1a;一旦current.next反转为向…

ros2 标定相机

一个终端执行&#xff1a; ros2 run image_tools cam2image --ros-args -p width:640 -p height:480 -p frequency:30.0 -p device_id:-1 -r /image:/camera/image_raw另一个终端执行&#xff1a;8x6 是格子角点数量&#xff0c;0.028是格子尺寸 ros2 run camera_calibration …

IsaacLab学习记录(二)

二、导入并训练自己的机器人1、urdf等其他格式转usd&#xff08;工具在./scrips/tools/&#xff09;​​​维度​​​​URDF (Unified Robot Description Format)​​​​USD (Universal Scene Description)​​​​定位​​机器人模型描述标准&#xff08;仅描述单机器人&…

基于Rust Softplus 函数实践方法

Softplus 函数 Softplus 函数是神经网络中常用的激活函数之一,定义为: ​ Softplus函数导数 ​ 是 sigmoid 函数。Softplus 处处可导,并且导数恰好是 sigmoid。 它是 ReLU 函数的平滑近似,具有连续可导的特性,适合需要梯度优化的场景。 数学特性 平滑性:导数为 Sig…

Ubuntu服务器安装Miniconda

下载 Miniconda 安装脚本&#xff08;如果能联网&#xff09;wget https://repo.anaconda.com/miniconda/Miniconda3-py39_24.1.2-0-Linux-x86_64.sh -O Miniconda3.sh安装 Miniconda 到 /opt/condabash Miniconda3.sh -b -p /opt/conda激活 conda/opt/conda/bin/conda init ba…

Java数组补充v2

一、数组基本概念1. 什么是数组数组是Java中用来存储同类型数据的固定大小的连续内存空间的数据结构。2. 数组特点固定长度&#xff1a;一旦创建&#xff0c;长度不可改变相同类型&#xff1a;所有元素必须是同一数据类型索引访问&#xff1a;通过下标&#xff08;从0开始&…

【PTA数据结构 | C语言版】前缀树的3个操作

本专栏持续输出数据结构题目集&#xff0c;欢迎订阅。 文章目录题目代码题目 请编写程序&#xff0c;利用前缀树查找给定字符串是否在某给定字符串集合 S 中。 输入格式&#xff1a; 输入首先给出一个正整数 n&#xff08;≤1000&#xff09;&#xff0c;随后 n 行&#xff0…

JAVA面试宝典 -《缓存架构:穿透 / 雪崩 / 击穿解决方案》

&#x1f4a5;《缓存架构&#xff1a;穿透 / 雪崩 / 击穿解决方案》 文章目录&#x1f4a5;《缓存架构&#xff1a;穿透 / 雪崩 / 击穿解决方案》&#x1f9ed; 一、开篇导语&#xff1a;为什么缓存是高并发系统的命脉&#xff1f;✅1.1 缓存的核心价值缓存带来的收益​​&…

FPGA创意项目网页或博客推荐

1. 综合项目平台(开源+教程) ① Hackster.io - FPGA专区 🔗 https://www.hackster.io/fpga 特点: 大量基于FPGA的创意项目(如Zynq游戏机、视觉处理、机器人控制)。 提供完整教程(Vivado工程文件+代码)。 推荐项目: FPGA-Based Oscilloscope(低成本示波器) V…

Go 程序无法使用 /etc/resolv.conf 的 DNS 配置排查记录

在最近的一次部署中&#xff0c;我遇到一个奇怪的问题&#xff1a;Go 程序在运行时不使用 /etc/resolv.conf 中的 DNS 设置&#xff0c;导致服务无法正常访问域名。这篇文章记录下完整的排查过程和最终的解决方案。1. 问题现象我有一个部署在 KVM 虚拟机内的 Go 应用&#xff0…

微服务相关问题(2)

1、Spring Cloud相关常用组件注册中心&#xff08;nacos、Eureka等&#xff09;、负载均衡&#xff08;Ribbon、LoadBalancer&#xff09;、远程调用&#xff08;feign&#xff09;、服务熔断&#xff08;Sentinel、Hystrix&#xff09;、网关&#xff08;Gateway&#xff09;2…

安全初级2

一、作业要求 1、xss-labs 1~8关 2、python实现自动化sql布尔育注代码优化(二分查找) 二、xss-labs 1~8关 1、准备 打开小皮面板&#xff0c;启动MySQL和apacher 下载 xss-labs&#xff0c;并解压后放到 phpstudy_pro 的 WWW 目录下&#xff0c;重命名为 xss-labs 访问链…

基础算法题

基础算法题 链表 1.1反转链表 描述&#xff1a; 描述 给定一个单链表的头结点pHead(该头节点是有值的&#xff0c;比如在下图&#xff0c;它的val是1)&#xff0c;长度为n&#xff0c;反转该链表后&#xff0c;返回新链表的表头。 数据范围&#xff1a; 0≤&#xfffd;≤…

Android 15 源码修改:为第三方应用提供截屏接口

概述 在 Android 系统开发中,有时需要为第三方应用提供系统级的截屏功能。本文将详细介绍如何通过修改 Android 15 源码中的 PhoneWindowManager 类,实现一个自定义广播接口来触发系统截屏功能。 修改方案 核心思路 通过在系统服务 PhoneWindowManager 中注册自定义广播监…

20250717 Ubuntu 挂载远程 Windows 服务器上的硬盘

由 DeepSeek 生成&#xff0c;方法已经验证可行。 通过网络挂载Windows共享硬盘&#xff08;SMB/CIFS&#xff09; 确保网络共享已启用&#xff1a; 在Windows电脑上&#xff0c;右键点击目标硬盘或文件夹 → 属性 → 共享 → 启用共享并设置权限&#xff08;至少赋予读取权限&…

深度学习图像增强方法(二)

三、直方图均衡化 1. 普通直方图均衡化 直方图均衡化的原理是将图像的灰度直方图展平,使得每个灰度级都有更多的像素分布,从而增强图像的对比度。具体步骤如下: 计算灰度直方图:统计图像中每个灰度级的像素数量。 计算累积分布函数(CDF):计算每个灰度级的累积概率。 映…

QT——信号与槽/自定义信号与槽

1 信号与槽基本介绍 提出疑问&#xff0c;界面上已经有按键了&#xff0c;怎么操作才能让用户按下按键后有操作上的反应呢&#xff1f; 在 Qt 中&#xff0c;信号和槽机制是一种非常强大的事件通信机制。这是一个重要的概念&#xff0c;特别是对于初学者来说&#xff0c;理解它…

Spring原理揭秘--Spring的AOP

在这之前我们已经介绍了AOP的基本功能和概念&#xff0c;那么当AOP集成到spring则会发生改变。Spring AOP 中的Joinpoint&#xff1a;之前提高了很多Joinpoint的类型&#xff0c;但是在spring中则只会有方法级别的Joinpoint&#xff0c;像构造方法&#xff0c;字段的调用都没适…

C++学习笔记五

C继承//基类 class Animal{};//派生类 class Dog : public Animal{};#include<iostearm> using namespace std;//基类 class Shape{public:void setwidth(int w){width w;}void setheight(int h){height h;}protected:int width;int height;}//派生类 class Rectangle …

AndroidStudio环境搭建

一、AndroidStudio下载 正常百度出来的站会自动翻译成中文&#xff0c;导致历史版本的界面总是显示不出可下载的地方&#xff0c;点击成切回英文&#xff0c;就能看出了。 历史版本&#xff1a;https://developer.android.google.cn/studio/archive