any与unknown的区别

1.any类型

any 类型表示没有任何限制,该类型的变量可以赋予任意类型的值。

let x:any;x = 1; // 正确
x = 'foo'; // 正确
x = true; // 正确

any 类型通常在需要处理不确定类型的值,或者在从 JavaScript 代码迁移到 TypeScript 时使用。

any类型要慎用,它会“污染”其他变量。它可以赋值给其他任何类型的变量,导致其他变量出错。

let x:any = 'hello';
let y:number;y = x; // 不报错y * 123 // 不报错
y.toFixed() // 不报错

2.unknown类型

unknown 类型在 TypeScript 中是一种表示未知类型的类型,它用于表示可能具有任何类型的值,但不能直接对其进行操作,在使用时需要进行显式的类型检查类型断言,避免类型污染。

let x:unknown = 123;
x = 'hello'; //会触发类型错误
x.trim(); //会触发类型错误if (typeof x === 'number') {let y = x + 10; // 正确
}

3.总结

anyunknown的主要区别在于类型检查的严格程度。any允许对其进行任意操作,而unknown需要进行类型检查或类型断言后才能进行操作,从而避免了any类型污染问题,提供了更强的类型安全性。在使用时,应尽量使用unknown类型代替any类型,并在需要时进行类型检查和类型断言,以提高代码的类型安全性。

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

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

相关文章

[Swift]RxSwift常见用法

RxSwift 是 ReactiveX API 的 Swift 版。它是一个基于 Swift 事件驱动的库,用于处理异步和基于事件的代码。 GitHub:https://github.com/ReactiveX/RxSwift 一、安装 首先,你需要安装 RxSwift。你可以使用 CocoaPods,Carthage 或者 Swift …

89基于matlab的人工蜂群和粒子群混合优化的路径规划算法

基于matlab的人工蜂群和粒子群混合优化的路径规划算法,起点和终点确定的前提下,在障碍物中寻找最佳路径。数据可更换自己的,程序已调通,可直接运行。 89人工蜂群和粒子群混合优化 (xiaohongshu.com)https://www.xiaohongshu.com/e…

用JavaScript的管道方法简化代码复杂性

用JavaScript的管道方法简化代码复杂性 在现代 web 开发中,维护干净有效的代码是必不可少的。随着项目的增加,我们功能的复杂性也在增加。然而,javaScript为我们提供了一个强大的工具,可以将这些复杂的函数分解为更小的、可管理的…

【 RTTI 】

RTTI 概念: RTTI(Run Time Type Identification)即通过运行时类型识别,程序能够使用基类的指针或引用来检 查着这些指针或引用所指的对象的实际派生类型。 原因: C是一种静态类 型语言。其数据类型是在编译期就确定的,不能在运…

MySQL的系统信息函数

系统信息函数让你更好的使用MySQL数据库 1、version()函数 查看MySQL系统版本信息号 select version();2、connection_id()函数 查看当前登入用户的连接次数 直接调用CONNECTION_ID()函数--不需任何参数--就可以看到当下连接MySQL服务器的连接次数,不同时间段该…

(数据结构)顺序表的插入删除

#include<stdio.h> #include<stdlib.h> #define MAX 10 typedef struct {int data[MAX];int lenth; }List; //初始化 void CreateList(List* L) {L->lenth 0;for (int i 0; i < MAX; i){L->data[i] 0;} } //插入 int ListInsert(List* L,int i,int e) …

PHP 判断给定两个时间是否在同一周,月,年

判断是否在同一周 date_default_timezone_set(PRC); //判断是否在同一周&#xff0c;原理&#xff1a;求出其中一个时间戳所在周的周一凌晨时间戳和周日24.00时间戳&#xff0c;如果另一个时间戳在这个范围内&#xff0c;则说明在同一周&#xff0c;否则不在同一周 function g…

hash系列加密代码【python】

众所周知hash不可逆&#xff0c;所以只能贴一些python加密的代码 想要破解hash的方法无外乎就是爆破&#xff0c;更加精确的爆破。像什么彩虹表、撞库。当然&#xff0c;文末会放一些hash在线爆破的网站 MD5加密 md5加密结果分为32位大小写&#xff0c;以及16位的大小写&am…

opencv轮廓

寻找轮廓之前需使用阈值或者canny边缘检测 找到轮廓 contours, hierarchy cv.findContours(thresh, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE) 绘制轮廓 第三个参数是轮廓的索引 cv.drawContours(img, contours, -1, (0,255,0), 3) 轮廓面积

ESP32-Web-Server编程- 实现 Web 登录网页

ESP32-Web-Server编程- 实现 Web 登录网页 概述 是时候实现更加安全的网页了。登录机制是最简单的控制网页访问权限的方法。 需求及功能解析 本节演示如何在 ESP32 上部署一个 Web 服务器&#xff0c;并建立登录页面的机制&#xff0c;用户可以实现登录、登出的功能&#x…

集合 ArrayList

ArrayList 方法&#xff1a; 1.增 add(E e) add(int index, E e) 2.删 remove(int index) remove(Object o)&#xff1a;删除第一次出现的o&#xff0c;返回是否成功。 3.改 set(int index, E e) 4.查 get(int index) size()

【奇淫技巧】两数交换

【奇淫技巧】两数交换 临时变量法&#xff1a;借助中间变量加减法&#xff1a;不使用中间变量异或法&#xff1a;不使用中间变量语法糖&#xff1a;某些编程语言支持交换语法糖借助函数&#xff0c;不交换 前提&#xff1a;待交换的两个元素&#xff0c;分别用a,b表示&#xf…

Array.from()的6种常见用法

Array.from()是一个用于从类数组对象或可迭代对象创建新数组的静态方法。 基本语法&#xff1a; Array.from(arrayLike[, mapFunction[, thisArg]])arrayLike: 类数组对象或可迭代对象&#xff0c;用于创建新数组。 mapFunction (可选): 对数组中的每个元素进行映射的函数。 t…

repo常用命令解析(持续更新)

1 同步 1.1 将本地仓库更新到最新状态。它会从远程服务器下载最新的代码&#xff0c;并将本地仓库与之同步。如果本地仓库中已经存在某个项目&#xff0c;repo sync会自动检测本地仓库中该项目的版本&#xff0c;并将其更新到最新状态。 类似于git fetch和git merge命令组合使…

算法题-统计字符个数(Python题解)

文章目录 前言思路code 前言 先前笔试做了一道算法题&#xff0c;题目是这样子的&#xff1a;&#xff08;PS&#xff1a;不用惊讶&#xff0c;是的&#xff0c;我不打算24今年考研了&#xff0c;一是&#xff0c;当初填报的学校不是我想要去的学校&#xff08;当初想一战成硕…

【HuggingFace Transformer库学习笔记】基础组件学习:Tokenizer

基础组件——Tokenizer &#xff08;1&#xff09;模型加载 from transformers import AutoTokenizersen "弱小的我也有大梦想!" # 从HuggingFace加载&#xff0c;输入模型名称&#xff0c;即可加载对于的分词器 tokenizer AutoTokenizer.from_pretrained("m…

华为电视盒子 EC6108V9C 刷机成linux系统

场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 家里装宽带的时候会自带电视盒子&#xff0c;但是由于某些原因电视盒子没有用&#xff0c;于是就只能摆在那里吃土&#xff0c;闲来无事&#xff0c;搞一下 问题描述 提示&#xff1a;这里描述项目中遇到…

【数据结构和算法】找出叠涂元素

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 三、代码 四、复杂度分析 前言 这是力扣的2661题&#xff0c;难度为中等&#xff0c;解题方案有很多种&…

Linux 系统是如何收发网络包的?(计算机网络)

一、Linux 网络协议栈 如下是TCP/IP四层网络模型&#xff0c;实际上Linux 网络协议栈与它相似 下图是Linux 网络协议栈 二、Linux 接收网络包的流程 1.网卡是计算机里的一个硬件&#xff0c;专门负责接收和发送网络包&#xff0c;当网卡接收到一个网络包后&#xff0c;会通过…

15、 深度学习之正向传播和反向传播

上一节介绍了训练和推理的概念,这一节接着训练和推理的概念讲一下,神经网络的正向传播和反向传播。 其实单看正向传播和反向传播这两个概念,很好理解。 正向传播(Forward Propagation)是指从输入层到输出层的数据流动过程,而反向传播(Backpropagation)是指数据从输出…