首页 > 其他分享 >TypeScript系列 2.任意类型

TypeScript系列 2.任意类型

时间:2023-07-09 12:55:30浏览次数:48  
标签:TypeScript 系列 name Object 报错 类型 obj 任意 any

本系列知识部分基于小满ZS的TypeScript系列教程。我也会补充一些视频没有的内容。

类型的等级层次

  1. 任意类型 any 、unkown
  2. Object
  3. 包装类型 Number String Boolean
  4. 基本类型 number string boolean
  5. 字面量
  6. never

一条基本原则:等级低的能给等级高的赋值,等级高的不能给等级低的赋值

img

例外的情况如any,会在下面讨论。

any 、unkown

  1. anyunknown是两个顶级类型,任何类型都可以赋值给它
let a: any = [];
a = 123;
a = "ts";
a = {};
a = Symbol(1);
a = undefined;
a = null;

let u: unknown = [];
u = 123;
u = undefined;
u = BigInt(3221321313132131221331231n);

要使用BigInt类型,要把tsconfig.json中的target和lib都设置为"ES2020"才支持
img

  1. any类型可以赋值给任意类型,unkonw类型只能赋值给any类型或unkown类型

img

  1. any类型可以调用对象的方法,没有提示但不会报错

img

  1. unkown类型不能调用对象的属性、方法

img

  1. 综合 3、4 unkown类型要比any类型更安全一些

Object、object、{}

  1. Object可以视为包含所有对象的类型
let obj: Object;
obj = 21;
obj = "23";
obj = BigInt(1234312234n);
obj = null;             //报错
obj = undefined;        //报错
obj = { name: "sam", age: 30 };
console.log(obj.name);  //报错:类型“Object”上不存在属性“name”
  1. object常用于泛型约束,代表非原始类型的引用类型
let obj: object;
obj = 21;               //报错
obj = "23";             //报错
obj = null;             //报错
obj = undefined;        //报错
obj = { name: "sam", age: 30 }; //正确
console.log(obj.name); //报错
  1. {}与Object相同

标签:TypeScript,系列,name,Object,报错,类型,obj,任意,any
From: https://www.cnblogs.com/sq800/p/17538588.html

相关文章

  • ASP.NET Core SignalR 系列(二)- 中心(服务端)
    本章将和大家分享ASP.NETCoreSignalR中的中心(服务端)。本文大部分内容摘自微软官网:https://learn.microsoft.com/zh-cn/aspnet/core/signalr/hubs?view=aspnetcore-7.0废话不多说,我们直接来看一个Demo,Demo的目录结构如下所示:本Demo的Web项目为ASP.NETCoreWeb应用程序(目......
  • 2023-07-07:给出两个字符串 str1 和 str2。 返回同时以 str1 和 str2 作为子序列的最短
    2023-07-07:给出两个字符串str1和str2。返回同时以str1和str2作为子序列的最短字符串。如果答案不止一个,则可以返回满足条件的任意一个答案。输入:str1="abac",str2="cab"。输出:"cabac"。答案2023-07-07:大体步骤如下:1.初始化字符串str1和str2分别为"abac"......
  • 2023-07-07:给出两个字符串 str1 和 str2。 返回同时以 str1 和 str2 作为子序列的最短
    2023-07-07:给出两个字符串str1和str2。返回同时以str1和str2作为子序列的最短字符串。如果答案不止一个,则可以返回满足条件的任意一个答案。输入:str1="abac",str2="cab"。输出:"cabac"。答案2023-07-07:大体步骤如下:1.初始化字符串str1和str2分别为"abac"和"cab"......
  • TypeScript+Vue3
    TypeScriptAny类型和unknown顶级类型1.没有强制限定哪种类型,随时切换类型都可以我们可以对any进行任何操作,不需要检查类型2.声明变量的时候没有指定任意类型默认为any3.弊端如果使用any就失去了TS类型检测的作用4.TypeScript3.0中引入的unknown类型也被认为是top......
  • OpenMP优化调研系列文章(3)
    作者介绍谢依晖湖南大学硕士研究生在读,本科毕业于湖南大学计算机科学与技术专业本文调研了4篇与OpenMP优化相关的文献,对优化点分析如下:面向Open64的OpenMP程序优化[1]跨越过程边界的并行区重构Open64有着过程间分析优化部件,因此可以知道哪些函数使用了被调函数,从而可以通过在使用被......
  • 给 Helm 修复一个 Bug - 每天5分钟玩转 GPT 编程系列(2)
    目录絮絮叨逛社区领任务复现Bug让DevChat准备Bug复现材料对着DevChat给的命令复现Bug定位Bug修复Bug琢磨下怎么修复让DevChat写一个日志脱敏函数继续让DevChat补充一个UT继续让DevChat写CommitMessage提PR打完收工絮絮叨注:这一篇文章中Bug定位的部分,也就......
  • 源码分析 | MySQL测试框架 MTR 系列教程(三):源码篇
    作者:卢文双资深数据库内核研发序言:以前对MySQL测试框架MTR的使用,主要集中于SQL正确性验证。近期由于工作需要,深入了解了MTR的方方面面,发现MTR的能力不仅限于此,还支持单元测试、压力测试、代码覆盖率测试、内存错误检测、线程竞争与死锁等功能,因此,本着分享的精神,将其......
  • 特性介绍 | MySQL测试框架 MTR 系列教程(四):语法篇
    作者:卢文双资深数据库内核研发序言:以前对MySQL测试框架MTR的使用,主要集中于SQL正确性验证。近期由于工作需要,深入了解了MTR的方方面面,发现MTR的能力不仅限于此,还支持单元测试、压力测试、代码覆盖率测试、内存错误检测、线程竞争与死锁等功能,因此,本着分享的精神,将其......
  • TypeScript面向对象
    TypeScript面向对象面向对象是程序中一个非常重要的思想。面向对象很简单,简而言之就是程序之中所有的操作都需要通过对象来完成。一切皆对象接口TypeScript中的接口跟传统语言(比如Java)的接口有点差别对象可以隐式实现接口概念描述一个类型一个接口里面可以有:字段方法......
  • TypeScript基本介绍与开发环境
    TypeScript基本介绍与开发环境TypeScript官网TypeScript简介TypeScript是JavaScript的超集它对JS进行了扩展,向JS中引入了类型的概念,并添加了许多新的特性TS代码需要通过编译器编译为JS,然后再交由JS解析器执行TS完全兼容JS,换言之,任何的JS代码都可以直接当成JS使用相较于J......