当前位置:网站首页>【ts】typeScript高阶:any和unknown
【ts】typeScript高阶:any和unknown
2022-08-05 05:16:00 【六月的可乐】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
typeScript高阶之any和unknown
前言
学习目标:
1、any和unknown的区别
2、unknown类型与其他类型的联合类型、交叉类型
3、unknown的应用–结合类型收缩
提示:以下是本篇文章正文内容,下面案例可供参考
一、any与unknown类型的区别
1、any类型表示任意类型,放弃了ts类型检查,ts中应该少用
type T1 = keyof any; // string | number | symbol
2、unkonw类型是暂时未知类型(之后会知道),仍然会进行ts的类型检查
type T2 = keyof unknown;// never
3、在ts的类型系统中never(空类型)是最窄的类型,any是最宽的类型
二、unknown类型与其他类型的联合类型、交叉类型
1.unknown类型与其他类型的联合类型
代码如下(示例):
type T00 = unknown | null; // unknown
type T00 = unknown | undefined; // unknown
type T00 = unknown | null | undefined; // unknown
type T00 = unknown | string; // unknown
type T00 = unknown | string[]; // unknown
type T00 = unknown | any; // any
type T00 = unknown | unknown; // unknown
2.unknown类型与其他类型的交叉类型
代码如下(示例):
type T00 = unknown & null; // null
type T00 = unknown & undefined; // undefined
type T00 = unknown & null & undefined; // nerver
type T00 = unknown & string; // string
type T00 = unknown & string[]; // string[]
type T00 = unknown & any; // any
type T00 = unknown & unknown; // unknown
3.unknown类型与其他类型的关系
代码如下(示例):
let value: unknown;
let value1: unknown = value; //正确
let value2: any = value; // 正确
let value3: boolean = value; // 错误
let value4: string = value; // 错误
let value5: number = value; // 错误
let value6: object = value; // 错误
let value7: any[] = value; // 错误
let value8: Function = value; // 错误
4.unknown类型经典例子
type T50<T> = {
[P in keyof T]: number};
type T51 = T50<any>; // {[key: string]: number}
type T52 = T50<unknown>; // {}
三、unknown的应用–结合类型收缩
declare function isFunction(x: unknown): x is Function;
function f20(x: unknown) {
if (x instanceof Error) {
x; // Error};
if (isFunction(x)) {
x;// Function}
}
总结
可以把任何类型赋值给any类型的变量,并对该变量执行任何操作(不需要关注类型,等同js);同样可以把任何值赋值给unkonw类型的变量,但是必须进行类型检查或者断言才能对变量进行操作变量(必须关注变量的类型)。
边栏推荐
- spingboot 容器项目完成CICD部署
- BroadCast Receiver(广播)详解
- 轻松接入Azure AD+Oauth2 实现 SSO
- Detailed explanation of BroadCast Receiver (broadcast)
- 表情捕捉的指标/图像的无参考质量评价
- flink中文文档-目录v1.4
- 基于STM32F407的WIFI通信(使用的是ESP8266模块)
- 拿出接口数组对象中的所有name值,取出同一个值
- dataframe 常用操作
- Tensorflow steps on the pit notes and records various errors and solutions
猜你喜欢
[After a 12] No record for a whole week
MSRA提出学习实例和分布式视觉表示的极端掩蔽模型ExtreMA
MSRA proposes extreme masking model ExtreMA for learning instances and distributed visual representations
单变量线性回归
【论文精读】R-CNN 之预测框回归(Bounding box regression)问题详述
5G中切片网络的核心技术FlexE
Flink EventTime和Watermarks案例分析
盘点关于发顶会顶刊论文,你需要知道写作上的这些事情!
[Pytorch study notes] 9. How to evaluate the classification results of the classifier - using confusion matrix, F1-score, ROC curve, PR curve, etc. (taking Softmax binary classification as an example)
CVPR 2020 - 频谱正则化
随机推荐
基于Flink CDC实现实时数据采集(四)-Sink接口实现
CVPR best paper winner Huang Gao's team from Tsinghua University presented the first dynamic network review
【Pytorch学习笔记】10.如何快速创建一个自己的Dataset数据集对象(继承Dataset类并重写对应方法)
基于STM32F407的WIFI通信(使用的是ESP8266模块)
基于STM32F4的FFT+测频率幅值相位差,波形显示,示波器,时域频域分析相关工程
MSRA提出学习实例和分布式视觉表示的极端掩蔽模型ExtreMA
通过Flink-Sql将Kafka数据写入HDFS
【Pytorch学习笔记】11.取Dataset的子集、给Dataset打乱顺序的方法(使用Subset、random_split)
Comparison and summary of Tensorflow2 and Pytorch in terms of basic operations of tensor Tensor
Kubernetes常备技能
Facial Motion Capture 调研
【Kaggle项目实战记录】一个图片分类项目的步骤和思路分享——以树叶分类为例(用Pytorch)
数控直流电源
6k+ star,面向小白的深度学习代码库!一行代码实现所有Attention机制!
轻松接入Azure AD+Oauth2 实现 SSO
Tensorflow踩坑笔记,记录各种报错和解决方法
表情捕捉的指标/图像的无参考质量评价
11%的参数就能优于Swin,微软提出快速预训练蒸馏方法TinyViT
《基于机器视觉测量系统的工业在线检测研究》论文笔记
六步搞定子网划分