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

TypeScript系列之-理解TypeScript类型系统画图讲解

TypeScript的输入输出

如果我们把 Typescript 编译器看成一个黑盒的话。其输入则是使用 TypeScript 语法书写的文本或者文本集合

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

其中 JS 是将来需要运行的文件(里面是没有ts语法,有一个类型擦除的操作),而 .d.ts 声明文件则是 ts 文件中的类型声明,这个类型声明就是你在 ts 文件声明的类型和 TypeScript 类型推导系统推导的类型。当然你也可以自己写 .d.ts 声明文件。

TypeScript作用

  1. 来自知乎网友的回答

至于说什么类型提示,其实很鸡肋,代码整体读熟了,这个提示有啥用?如果没读熟,ts也帮不了你。为了个提示,我写一堆interface,还有一大堆文件。。。真的是为了拉屎,现场盖厕所一样。

我这只是为了喷那些活动页也特么要上ts的项目。至于复杂分层多的项目,ts是有必要的。

----。。。。

  1. 提供了丰富的类型系统,比如interface,type......
  2. 提供了类型操作 API。TypeScript 不但提供内置类型,用户也可以利用集合操作和泛型对类型操作从而生成新的类型

  1. 对每一种类型的属性和方法都进行了定义(也就是类型检查作用)。
  2. 提供了模块系统(module,namespace)
  3. 提供了更加方面的 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语法,有一个类型擦除的操作)&#xff0…...

制造业智能化一体式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不能同时参与多笔交易&#xff08;必须在再次购买前出售掉之前的股票&#xff09;最多可以完成 两笔 交易 解答思路 本题最多可以完成两笔交易&#xff0c;…...

fastlio2 保存每帧的点云和每帧的里程计为单独的文件做后端回环优化和手动回环优化

为了 提供数据做后端回环优化和手动回环优化,需要保存每帧的点云和每帧的里程计为单独的文件,并且需要保存的名字为ros时间戳。 效果很好,比我自己写的手动回环模块好用 // This is an advanced implementation of the algorithm described in the // following paper: /…...

【线段树】【前缀和】:1687从仓库到码头运输箱子

本题简单解法 C前缀和算法的应用&#xff1a;1687从仓库到码头运输箱子 本文涉及的基础知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 线段树 LeetCode1687从仓库到码头运输箱子 你有一辆货运卡车&#xff0c;你需要用这一辆车…...

[AIGC] 实现博客平台的推荐排行榜

推荐排行榜是许多网站和平台的重要特性&#xff0c;它可以把最受欢迎或最具价值的内容展示给用户。本文将详细介绍如何为博客网站实现一个推荐排行榜。 文章目录 一、选择推荐指标二、收集数据三、设计排行榜算法四、显示推荐排行榜五、demo总结 一、选择推荐指标 实现推荐排行…...

C++利用键值对计算某一个数对应的最值及其索引位置

目录 一、算法概述二、代码实现1、计算最值2、计算最值及其索引 三、结果展示 本文由CSDN点云侠原创&#xff0c;原文链接。如果你不是在点云侠的博客中看到该文章&#xff0c;那么此处便是不要脸的爬虫与GPT。 一、算法概述 类似下图所示&#xff0c;计算第一列中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)

来自&#xff1a;11.4. 飞行小鸟 — mPython掌控 2.2.0 documentation &#xff08;TODO&#xff09;...

顺序表实战——基于顺序表的通讯录

前言&#xff1a;本篇文章主要是利用顺序表作为底层&#xff0c; 实现一个通讯录。偏向于应用&#xff0c; 对于已经学习过c的友友们可能没有难度了已经。没有学习过c的友友&#xff0c; 如果顺序表不会写&#xff0c; 或者说没有自己实现过&#xff0c; 请移步学习顺序表相关内…...

Omni-Vision Sanctuary助力后端开发:设计高并发API接口的最佳实践

Omni-Vision Sanctuary助力后端开发&#xff1a;设计高并发API接口的最佳实践 1. 高并发API接口设计的挑战与机遇 想象一下这样的场景&#xff1a;你的电商平台刚刚上线了一个基于Omni-Vision Sanctuary的智能商品描述生成功能&#xff0c;突然涌入的用户请求让你的服务器不堪…...

Flowise语音交互扩展:Whisper+TTS构建全模态助手

Flowise语音交互扩展&#xff1a;WhisperTTS构建全模态助手 1. 引言&#xff1a;为什么需要语音交互&#xff1f; 想象一下这样的场景&#xff1a;你正在厨房做饭&#xff0c;手上沾满了面粉&#xff0c;突然想到一个技术问题需要查询。这时候如果还要打字输入&#xff0c;简…...

Python包管理工具之uv的使用详细指南

uv 是一个新兴的 Python 包管理工具&#xff0c;它旨在提供比 pip 和 poetry 更快、更现代的依赖管理体验。uv 由 Charles Murphy 开发&#xff0c;基于 Rust 构建&#xff0c;具有极高的性能和兼容性&#xff0c;支持标准的 requirements.txt 文件以及 pyproject.toml 中的依赖…...

CVE-2016-2183漏洞自查与修复指南:你的Nginx/Apache还在用有问题的SSL/TLS协议吗?

CVE-2016-2183漏洞深度解析与实战修复&#xff1a;从检测到防护的全链路方案 凌晨三点&#xff0c;运维团队的告警系统突然响起——安全扫描报告显示生产环境存在SSL/TLS协议信息泄露风险。这不是普通的漏洞警报&#xff0c;而是可能直接导致加密通信被破解的CVE-2016-2183。作…...

【花雕学编程】代码泄露之后:深度剖析Claude开源对开发者生态的冲击与机遇

导语&#xff1a;2026年3月31日&#xff0c;Anthropic 旗下 Claude Code CLI 客户端源码意外泄露&#xff0c;1906个源文件、51.2万行TypeScript代码被开发者备份至 GitHub 仓库 instructkr/claude-code&#xff0c;标注为“仅供研究”。这场看似偶然的打包失误&#xff0c;并非…...

Phi-4-mini-reasoning部署案例:科研团队构建内部逻辑验证辅助工具链

Phi-4-mini-reasoning部署案例&#xff1a;科研团队构建内部逻辑验证辅助工具链 1. 项目背景与模型介绍 Phi-4-mini-reasoning 是一款专注于推理任务的文本生成模型&#xff0c;特别适合处理数学题、逻辑题、多步分析和简洁结论输出等场景。与通用聊天模型不同&#xff0c;它…...

HunyuanVideo-Foley性能测试指南:在RTX 4090D上的推理速度与显存占用

HunyuanVideo-Foley性能测试指南&#xff1a;在RTX 4090D上的推理速度与显存占用 1. 前言&#xff1a;为什么需要性能测试 音效生成模型在实际业务场景中的表现&#xff0c;直接影响着用户体验和系统成本。对于企业用户来说&#xff0c;了解模型在特定硬件上的性能表现至关重…...

SDMatte开源大模型部署:本地化AI抠图替代PS,支持透明物体精细提取

SDMatte开源大模型部署&#xff1a;本地化AI抠图替代PS&#xff0c;支持透明物体精细提取 1. 产品概述 SDMatte是一款专注于高质量图像抠图的AI模型&#xff0c;特别擅长处理传统抠图工具难以应对的复杂场景。与Photoshop等传统工具相比&#xff0c;SDMatte通过深度学习技术实…...

OpenClaw多模态实践:Qwen3.5-9B-VL图文报告自动生成

OpenClaw多模态实践&#xff1a;Qwen3.5-9B-VL图文报告自动生成 1. 为什么需要多模态自动化 去年整理学术文献时&#xff0c;我每天要手动截取论文图表、复制关键数据、整理成Markdown笔记。这个过程不仅耗时&#xff0c;还经常漏掉重要细节。直到发现OpenClaw可以对接Qwen3.…...

R语言新手必看:ggplot2安装失败的5种常见原因及解决方法(附完整代码)

R语言ggplot2安装问题全解析&#xff1a;从报错排查到可视化实战 第一次接触R语言的ggplot2包时&#xff0c;那种兴奋和期待往往会被突如其来的报错信息浇灭。作为R社区最受欢迎的数据可视化工具&#xff0c;ggplot2以其优雅的语法和强大的定制能力吸引了无数用户&#xff0c;但…...