提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

typeScript高阶之any和unknown

  • 前言
  • 一、any与unknown类型的区别
  • 二、unknown类型与其他类型的联合类型、交叉类型
    • 1.unknown类型与其他类型的联合类型
    • 2.unknown类型与其他类型的交叉类型
    • 3.unknown类型与其他类型的关系
    • 4.unknown类型经典例子
  • 三、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类型的变量,但是必须进行类型检查或者断言才能对变量进行操作变量(必须关注变量的类型)。

【ts】typeScript高阶:any和unknown相关推荐

  1. [ts]typescript高阶之typeof使用

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 typescript高阶:typeof使用 前言 一.typeof与对象结合使用 二.typeof与枚举结合使用 三.typeof与c ...

  2. 【ts】typescript高阶:键值类型及type与interface区别

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 typescript高阶之键值类型及type与interface区别 前言 一.键值类型的语法 1.语法 2.错误例子 3.正确例子 ...

  3. vue 高阶面试题_大厂面试题合集

    最近从网上收集了一些大厂的面试题,下面分享给大伙,希望能给哪些在找工作以及准备找工作的朋友一些帮助. 面试准备: 虽然说作为软件开发工程师,需要靠持之以恒的锻炼.积累和沉淀提升个人技术水平:但在平常业 ...

  4. Vue3.0 + typescript 高仿网易云音乐 WebApp

    Vue3.0 + typescript 高仿网易云音乐 WebApp 前言 Vue3.0 的正式发布,让我心动不已,于是尝试用 vue3 实现一个完整的项目,整个项目全部使用了 composition ...

  5. 麦克米伦高阶词典 7500词汇表 红星

    从Macmillan English Dictionary for Advanced Learners提取出来的带有五角星单词表.实际提取出来单词6313个,猜测是由于同一个单词可能会在不同释义处带有 ...

  6. 锁相环原理及数字化,用FPGA实现全数字高阶锁相环

    FPGA实现全数字高阶锁相环 本人通信专业大三学生,非常感谢杜勇老师的<数字通信同步技术>和<锁相环技术原理>,带领小白的我从零开始一点点了解数字同步技术. 第一次写文章,记录 ...

  7. Nginx --高阶

    Nginx -- 高阶 Nginx高级 第一部分:扩容 1.单机垂直扩容:硬件资源增加 2.水平扩展:集群化 会话管理 Nginx高级负载均衡 使用sticky模块完成对Nginx的负载均衡 1.下载 ...

  8. Go 接口实现原理【高阶篇】: type _interface struct

    Go 接口实现原理[高阶篇]: type _interface struct The Internal Definition Of Interface Types https://www.tapirg ...

  9. 《高阶前端指北》之JavaScript爬虫速成-视频下载(第四弹)

    视频存储 当前各大视频厂商都在升级视频存储架构,对于多数开发者来说,爬视频不像以前那么容易Get了.视频常规的存储方式有两种: 云端加密 阿里云和腾讯云都提供了对应的加密模式,甚至还提供了管道流的处理 ...

最新文章

  1. 【新星计划】Python print输出带颜色 总结
  2. android6.0源码分析之AMS服务源码分析
  3. ECCV 2018 | OR-CNN行人检测:为‘遮挡’而生
  4. 【jetson nano】 aarch64安装pycharm pytorch cuda
  5. vue实现查询多条记录_sql:多表查询
  6. 【Linux系统编程】Linux系统调用
  7. HDU - 4497 GCD and LCM 数论gcd
  8. NewCode----求数列的和
  9. JavaScript实现接口的三种经典方式
  10. 贵!iPhone 11系列维修费用出炉 最高的可以入手一部华为P30 Pro了…
  11. Shuffling Machine (20)
  12. 基于MSP430f5529的红外循迹小车
  13. JSP基础教程【1】
  14. linux latex 英文字体,LaTeX 中的一些英文字体
  15. html5 css3学习资料、教程、实例收集
  16. 拔丝芋头的Java学习日记---Day9
  17. Linux的基本学习(四)——磁盘与文件系统管理
  18. 鲲鹏devkit开发套件——编译调试工具介绍
  19. 基于Java的Minecraft游戏后端自定义插件 06绘制简单粒子特效与BukkitRunable定时器
  20. linux 进入recovery模式,recovery模式怎么进入,教您recovery模式怎么进入

热门文章

  1. Linux 文件和目录管理
  2. java中sort函数的使用
  3. R语言的数据读入--非结构化数据读入
  4. EEGLAB安装、EDF数据导入、EEG预处理(Matlab)
  5. java web期末_javaweb期末考试模拟题
  6. 搭建WordPress个人博客全过程(超详细)
  7. Micro-SIM卡与Mini-SIM卡
  8. 解决标准“痛点” 京东联手公安部检测中心将推指纹锁电商标准
  9. STM32使用ADC+DMA进行多通道模拟量采集 (踩坑及傻瓜式解析)
  10. 【MATLAB】命令技巧