当前位置: 首页 > news >正文

Typescript》》TS》》Typescript 3.8 import 、import type

Typescript 3.8

Typescript 3.8版本中专门引入了import type和export type

‌import type‌:****仅导入类型信息(如类、接口等),不引入运行时的值,编译后不会生成对应 JavaScript 代码。
主要用于类型检查,避免循环依赖和副作用。 ‌

**‌import‌:**导入模块中的值(变量、函数、类等)和类型,编译后会在生成的 JavaScript 代码中包含相应逻辑。

在这里插入图片描述

// 假设有一个模块 myModule.ts
export const myValue = 42;
export interface MyType {name: string;
}// 在另一个文件中导入
import { myValue, MyType } from './myModule';console.log(myValue); // 这行代码会在运行时执行
const obj: MyType = { name: 'example' }; // MyType 用于类型检查// 在这个例子中,myValue 是一个实际的值,会在运行时被导入和使用,而 MyType 是一个类型,用于编译时的类型检查。
// 假设有一个模块 myModule.ts
export const myValue = 42;
export interface MyType {name: string;
}// 在另一个文件中导入
import type { MyType } from './myModule';// myValue 不会被导入,因为它没有使用 import 语句(只有 import type)
const obj: MyType = { name: 'example' }; // MyType 用于类型检查
// 在这个例子中,MyType 被导入用于类型检查,但 myValue 没有被导入,因为它不是通过 import 而是通过 import type 导入的。因此,myValue 不会出现在编译后的 JavaScript 输出中。

混合导入(TypeScript 4.5+)

// 一行内同时导入类型和值(推荐)
import { useState, useEffect, type ComponentProps, type Ref } from 'react'const MyComponent = (props: ComponentProps<'div'>) => {const count: Ref<number> = ref(0)// ...
}

在这里插入图片描述
问自己这个问题:我需不需要在运行时(代码实际执行时)使用这个东西?
使用 import
只在写代码时用到(代码实际执行时,不使用)→ import type

// 这些在代码执行时真的需要存在
import { axios } from 'axios'           // 要发网络请求
import { ref, computed } from 'vue'     // 要创建响应式数据
import { utilityFunction } from './utils' // 要调用函数// 编译后:这些代码必须保留!// 这些只是给TS编译器看的"类型提示"
import type { User } from './types'      // 只是定义数据形状
import type { RouteLocation } from 'vue-router' // 只是类型约束
import type { CSSProperties } from 'vue' // 只是样式类型// 编译后:这些代码会被完全删除!

在这里插入图片描述

http://www.dtcms.com/a/456775.html

相关文章:

  • Python全栈(基础篇)——Day07:后端内容(函数的参数+递归函数+实战演示+每日一题)
  • 对抗样本:深度学习的隐秘挑战与防御之道
  • 通用:MySQL-InnoDB事务及ACID特性
  • 重庆江津网站建设企业专业网站设计公
  • 天津市武清区住房建设网站临沂天元建设集团网站
  • MySQL 锁机制深度解析:原理、场景、排查与优化​
  • Spring 的统一功能
  • 忘记php网站后台密码wordpress 医院模板下载
  • asp 网站卡死网站域名解析ip
  • Linux小课堂: 在 VirtualBox 虚拟机中安装 CentOS 7 的完整流程与关键技术详解
  • 单片机keilC51与MDK共存的方法(成功)
  • [Docker集群] Docker 容器入门
  • 分子动力学--不同拮抗剂与5-HT1AR结合机制的研究:一项分子对接与分子动力学模拟分析
  • 让压测回归简单:体验 PerfTest 分布式模式的“开箱即用”
  • 珠海网站制作定制企查查企业信息查询网页版
  • ZooKeeper源码分析与实战-模块五:原理篇
  • ZooKeeper源码分析与实战-模块四:实战篇
  • 元宇宙的医疗健康应用:重构诊疗、康复与研究
  • 建设外贸购物网站如何在网站做引流
  • 珠宝网站策划书做网站怎么赚钱吗
  • K-means损失函数-收敛证明
  • 如何看网站是不是织梦做的建一家网站多少钱
  • 通讯录的实现
  • CTFHub SQL注入通关笔记5:时间盲注(手注法+脚本法)
  • Excel表格批注提取器-网页版源码
  • 【机器学习】无监督学习 —— K-Means 聚类、DBSCAN 聚类
  • 【深入浅出PyTorch】--3.2.PyTorch组成模块2
  • [C++] --- 常用设计模式
  • vite 怎么阻止某一页面的热更新
  • 邯郸网站设计做网站的一般尺寸