当前位置:网站首页>【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类型的变量,但是必须进行类型检查或者断言才能对变量进行操作变量(必须关注变量的类型)。
边栏推荐
猜你喜欢

【论文精读】Rich Feature Hierarchies for Accurate Object Detection and Semantic Segmentation(R-CNN)

神经网络也能像人类利用外围视觉一样观察图像

Flink EventTime和Watermarks案例分析

The difference between the operators and logical operators

网络信息安全运营方法论 (上)

伪RTOS-ProroThread在CH573芯片上的移植

flink部署操作-flink on yarn集群安装部署

网络信息安全运营方法论 (下)

服务网格istio 1.12.x安装

单变量线性回归
随机推荐
【数据库和SQL学习笔记】4.SELECT查询2:排序(ORDER BY)、聚合函数、分组查询(GROUP BY)
ES6 新特性:Class 的继承
Flink和Spark中文乱码问题
读论文-Cycle GAN
[Pytorch study notes] 10. How to quickly create your own Dataset dataset object (inherit the Dataset class and override the corresponding method)
MaskDistill-不需要标注数据的语义分割
ECCV2022 | RU&谷歌提出用CLIP进行zero-shot目标检测!
基于Flink CDC实现实时数据采集(四)-Sink接口实现
【Pytorch学习笔记】9.分类器的分类结果如何评估——使用混淆矩阵、F1-score、ROC曲线、PR曲线等(以Softmax二分类为例)
门徒Disciples体系:致力于成为“DAO世界”中的集大成者。
[Over 17] Pytorch rewrites keras
Service
【Over 15】A week of learning lstm
2022年中总结关键词:裁员、年终奖、晋升、涨薪、疫情
MySQL
【论文阅读-表情捕捉】High-quality Real Time Facial Capture Based on Single Camera
[Practice 1] Diabetes Genetic Risk Detection Challenge [IFLYTEK Open Platform]
el-pagination左右箭头替换成文字上一页和下一页
A deep learning code base for Xiaobai, one line of code implements 30+ attention mechanisms.
flink部署操作-flink on yarn集群安装部署