TypeScript系列之-理解TypeScript类型系统画图讲解
TypeScript的输入输出
如果我们把 Typescript 编译器看成一个黑盒的话。其输入则是使用 TypeScript 语法书写的文本或者文本集合。

输出是编译之后的 JS 文件 和 .d.ts 的声明文件

其中 JS 是将来需要运行的文件(里面是没有ts语法,有一个类型擦除的操作),而 .d.ts 声明文件则是 ts 文件中的类型声明,这个类型声明就是你在 ts 文件声明的类型和 TypeScript 类型推导系统推导的类型。当然你也可以自己写 .d.ts 声明文件。
TypeScript作用
- 来自知乎网友的回答
至于说什么类型提示,其实很鸡肋,代码整体读熟了,这个提示有啥用?如果没读熟,ts也帮不了你。为了个提示,我写一堆interface,还有一大堆文件。。。真的是为了拉屎,现场盖厕所一样。
我这只是为了喷那些活动页也特么要上ts的项目。至于复杂分层多的项目,ts是有必要的。
----。。。。
- 提供了丰富的类型系统,比如interface,type......
- 提供了类型操作 API。TypeScript 不但提供内置类型,用户也可以利用集合操作和泛型对类型操作从而生成新的类型

- 对每一种类型的属性和方法都进行了定义(也就是类型检查作用)。
- 提供了模块系统(module,namespace)
- 提供了更加方面的 API,比如 class(这在 ES6 class 出来之前尤其好用),装饰器等
。。。。。。。
TypeScript 编译器原理
这块我自己一脸懵逼,先放着。。。。。
类型系统
变量类型和值类型
- JavaScript 中的类型其实是值的类型。实际上不仅仅是 JavaScript,任何动态类型语言都是如此,这也是动态类型语言的本质。
- Typescript 中的类型其实是变量的类型。实际上不仅仅是 Typescript,任何静态类型语言都是如此,这也是静态类型语言的本质。

在 JavaScript 中,一个变量可以是任意类型 ,对于 Typescript 来说,一个变量只能接受和它类型兼容的类型的值。
let a = 1
let a = 'das'
let a = []
//js中变量可以任意赋值
let a: number = 1;
a = "lucifer"; // error
a = 2222; // ok 智能赋值数字
从集合的角度理解TS数据类型
TypeScript 只检查 Shape,即类型定义的约束条件,听起来和集合(Set)这一概念颇为相像。从集合的角度能更深层次地理解 TypeScript 的类型。

如上number可以看作所有数字的并集,string可以看作所有字符串的并集
补充:number 和 Nunmber 区别
平常我们js会看到两种数字类型number和Number,它们之间的区别是什么如下:

如上number表示的是二进制的数据结构,而Number表示的是封装的对象。但我们平时用let a = 45;也可以用a.toFixed(2)呀!其中js帮你把number转换成Number,调用完toFixed后又给你返回数字,该过程叫包装对象。

相关文章:
TypeScript系列之-理解TypeScript类型系统画图讲解
TypeScript的输入输出 如果我们把 Typescript 编译器看成一个黑盒的话。其输入则是使用 TypeScript 语法书写的文本或者文本集合。 输出是编译之后的 JS 文件 和 .d.ts 的声明文件 其中 JS 是将来需要运行的文件(里面是没有ts语法,有一个类型擦除的操作)࿰…...
制造业智能化一体式I/O模块的集成与应用案例分享
在现代制造业中,智能化一体式I/O模块的应用已经成为提升生产效率、优化工艺流程的关键技术之一。这种一体化I/O模块的主要功能在于作为PLC(可编程逻辑控制器)系统的扩展接口,以满足多样化的输入输出需求。本文将通过一个实际案例&…...
《云原生安全攻防》-- 云原生应用风险分析
为了满足每位朋友的学习需求,并且支持课程的持续更新,本系列课程提供了免费版和付费视频版两种方式来提供课程内容。我们会持续更新课程内容,以确保内容的度和实用性。 在本节课程中,我们将一起探讨云原生应用在新的架构模式下可能…...
抖音-引流私域转化模式1.0现场视频,从抖音源源不断把人加到私域,
抖音-引流私域转化模式1.0现场视频,从抖音源源不断把人加到私域,让加到私域的粉丝买单 抖音-引流私域转化模式1.0现场视频,从抖音源源不断把人加到私域 - 百创网-源码交易平台_网站源码_商城源码_小程序源码 课程内容: 01.第一…...
外包干了6天,技术明显进步
先说一下自己的情况,本科生,2019年我通过校招踏入了南京一家软件公司,开始了我的职业生涯。那时的我,满怀热血和憧憬,期待着在这个行业中闯出一片天地。然而,随着时间的推移,我发现自己逐渐陷入…...
上传应用程序到苹果应用商店的工具和要
引言 在今天的移动应用市场中,将应用程序上传到苹果应用商店(App Store)是许多开发者的首要任务之一。然而,不同操作系统下的开发者可能需要使用不同的工具和遵循不同的要求来完成这一任务。本文将介绍在 macOS、Windows 和 Linu…...
vue:判断当前日期时间是否在一个日期时间区间里
在前端,可以使用 JavaScript 的 Date 对象来判断当前日期时间是否在一个日期时间区间内。 // 定义开始时间和结束时间 const startTime new Date(2024-03-29T08:00:00); // 开始时间 const endTime new Date(2024-04-02T18:00:00); // 结束时间// 获取当前时间 c…...
浏览器禁用cookie后session还能用吗?
1.背景 最近有朋友问我其面试时遇到的一个不常见的问题:浏览器禁用cookie后session还能用吗?,怎么解答。 2.cookie与session联系入手 2.1 理论基础 一般默认情况下,在会话中,服务器存储 session 的 sessionid &…...
C语言——顺序表
文章目录 一、线性表二、顺序表顺序表和数组的区别顺序表的分类1.静态顺序表2.动态顺序表 三、动态顺序表的实现1.动态顺序表头文件2.动态顺序表源文件3.测试源文件 一、线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是⼀种…...
CentOS7安装Docker及禅道
https://blog.csdn.net/weixin_46453070/article/details/136183615?ops_request_misc%257B%2522request%255Fid%2522%253A%2522171246925816800222886233%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id171246925816800222886233&biz_i…...
如何在社交媒体中使用增强现实来提高客户参与度?
目录 1. 增强现实在社交媒体中的应用是如何发展的 2. 社交媒体营销和广告中的增强现实 3. 社交媒体上的增强现实滤镜和镜头 4. 社交媒体平台上的增强现实购物 5. 利用社交媒体的增强现实事件和品牌激活 6. 增强现实在社交媒体中的未来是什么 7. 社交媒体中的增强现实常见…...
Autodesk AutoCAD 2025 (macOS, Windows) - 自动计算机辅助设计软件
Autodesk AutoCAD 2025 (macOS, Windows) - 自动计算机辅助设计软件 AutoCAD 2024 开始原生支持 Apple Silicon,性能提升至 2 倍 请访问原文链接:https://sysin.org/blog/autodesk-autocad/,查看最新版。原创作品,转载请保留出处…...
买卖股票的最佳时机III
题目链接 买卖股票的最佳时机III 题目描述 注意点 1 < prices.length < 1000000 < prices[i] < 100000不能同时参与多笔交易(必须在再次购买前出售掉之前的股票)最多可以完成 两笔 交易 解答思路 本题最多可以完成两笔交易,…...
fastlio2 保存每帧的点云和每帧的里程计为单独的文件做后端回环优化和手动回环优化
为了 提供数据做后端回环优化和手动回环优化,需要保存每帧的点云和每帧的里程计为单独的文件,并且需要保存的名字为ros时间戳。 效果很好,比我自己写的手动回环模块好用 // This is an advanced implementation of the algorithm described in the // following paper: /…...
【线段树】【前缀和】:1687从仓库到码头运输箱子
本题简单解法 C前缀和算法的应用:1687从仓库到码头运输箱子 本文涉及的基础知识点 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 线段树 LeetCode1687从仓库到码头运输箱子 你有一辆货运卡车,你需要用这一辆车…...
[AIGC] 实现博客平台的推荐排行榜
推荐排行榜是许多网站和平台的重要特性,它可以把最受欢迎或最具价值的内容展示给用户。本文将详细介绍如何为博客网站实现一个推荐排行榜。 文章目录 一、选择推荐指标二、收集数据三、设计排行榜算法四、显示推荐排行榜五、demo总结 一、选择推荐指标 实现推荐排行…...
C++利用键值对计算某一个数对应的最值及其索引位置
目录 一、算法概述二、代码实现1、计算最值2、计算最值及其索引 三、结果展示 本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法概述 类似下图所示,计算第一列中1或2对应的最…...
conda修改默认安装python版本为指定版本
1.查看conda中当前的python版本号: 打开Anaconda Powershell Prompt 输入python -V 回车会输出版本号 2.查看conda所支持的python版本,并选择指定版本安装 选择一个3.9.13版本的进行安装 安装命令: conda install python3.9.13 如果一直卡在这个画面,请使用管理员权限运行…...
显示学习番外篇(基于树莓派Pico) -- 游戏(TODO)
来自:11.4. 飞行小鸟 — mPython掌控 2.2.0 documentation (TODO)...
顺序表实战——基于顺序表的通讯录
前言:本篇文章主要是利用顺序表作为底层, 实现一个通讯录。偏向于应用, 对于已经学习过c的友友们可能没有难度了已经。没有学习过c的友友, 如果顺序表不会写, 或者说没有自己实现过, 请移步学习顺序表相关内…...
龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
JS手写代码篇----使用Promise封装AJAX请求
15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...
如何配置一个sql server使得其它用户可以通过excel odbc获取数据
要让其他用户通过 Excel 使用 ODBC 连接到 SQL Server 获取数据,你需要完成以下配置步骤: ✅ 一、在 SQL Server 端配置(服务器设置) 1. 启用 TCP/IP 协议 打开 “SQL Server 配置管理器”。导航到:SQL Server 网络配…...
flow_controllers
关键点: 流控制器类型: 同步(Sync):发布操作会阻塞,直到数据被确认发送。异步(Async):发布操作非阻塞,数据发送由后台线程处理。纯同步(PureSync…...
