typeScript 基础类型 (三)
typeScript 的基础类型包含 Boolean、Number、String、null、undefined 以及 ES6 的 Symbol 和 ES10 的 BigInt。
下面介绍每种类型的使用和规则
一、字符串类型介绍
// 普通的字符串声明方式
let str:string = 'momo~ssds'
// 也可以使用模版字符串 let str1:string = `模版字符串${str}` console.log('str1 :>> ', str1);

二、数字类型
// 支持十六进制、十进制、八进制和二进制; let num1: number = NaN; //Nan
let num2: number = 454555; //普通数字
let num3: number = Infinity; //无穷大
let num4: number = 456 //十进制
let num5: number = 0xf00d; //十六进制
let num6: number = 0b1010; //二进制
let num7: number = 0o744; //八进制s
三、布尔类型
// 布尔类型
// 注意,使用构造函数 Boolean 创造的对象不是布尔值: // let createdBoolean: boolean = new Boolean(1)
//这样会报错 应为事实上 new Boolean() 返回的是一个 Boolean 对象 // 事实上 new Boolean() 返回的是一个 Boolean 对象 需要改成 let createdBoolean: Boolean = new Boolean(1)
let booleand: boolean = true //可以直接使用布尔值
这里需要注意这个

4.空值类型
js 中没有空值(Void)的概念,在 TypeScript 中,可以用 void 表示没有任何返回值的函数
function voidFn(): void { // 这里的void 就表示此函数的返回值为空值
console.log('test void')
}
当一个函数无需返回值的时候我们就可以给这个函数定义成空值返回
另外 void也可以定义undefined 和 null类型
let u: void = undefined
let n: void = null;

但是当我们给void 定义成null的时候,报错了,这个是因为ts的严格模式下是不允许给void 设置成null的,要放开这个限制,可以修改tsconfig.json 文件把严格模式去掉

我们把这一行去掉后,发现就不报错了

5.Null和undefined类型
// null 和underfined 也是基础类型 我们是可以这么写的
let u: undefined = undefined; //定义undefined
let n: null = null; //定义null
void 和 undefined 和 null 最大的区别
与 void 的区别是,undefined 和 null 是所有类型的子类型。也就是说 undefined 类型的变量,可以赋值给 string 类型的变量:
比如我们这么写会报错的

//下面这么写就可以
let test: null = null
let num2: string = "1" num2 = test //或者这样的
let test: undefined = undefined
let num2: string = "1" num2 = test
6、Any 类型 和 unknown 顶级类型
any类型就是无法确定是哪种类型的时候就可以使用,其实变相告诉ts不要去检查这个变量的类型

TypeScript 3.0中引入的 unknown 类型也被认为是 top type ,但它更安全。与 any 一样,所有类型都可以分配给unknown
unknow unknow类型比any更加严格当你要使用any 的时候可以尝试使用unknow
//unknown 可以定义任何类型的值
let value: unknown; value = true; // OK
value = 42; // OK
value = "Hello World"; // OK
value = []; // OK
value = {}; // OK
value = null; // OK
value = undefined; // OK
value = Symbol("type"); // OK //这样写会报错unknow类型不能作为子类型只能作为父类型 any可以作为父类型和子类型
//unknown类型不能赋值给其他类型
let names:unknown = '123'
let names2:string = names //这样就没问题 any类型是可以的
let names:any = '123'
let names2:string = names //unknown可赋值对象只有unknown 和 any
let bbb:unknown = '123'
let aaa:any= '456' aaa = bbb

还有一个需要注意的是,如果对象被定义成any和unknow 表现是不一样的,定义成unknow 类型的对象是无法直接使用对象中的属性和方法的
// 如果是any类型在对象没有这个属性的时候还在获取是不会报错的
let obj: any = { b: 1 }
obj.a // 如果是unknow 是不能调用属性和方法 下面的这个写法是会报错的
let obj1: unknown = { b: 1, ccc: (): number => 213 }
obj1.b
obj1.ccc()

下一节介绍接口和对象类型
typeScript 基础类型 (三)的更多相关文章
- TypeScript基础类型,类实例和函数类型声明
TypeScript(TS)是微软研发的编程语言,是JavaScript的超集,也就是在JavaScript的基础上添加了一些特性.其中之一就是类型声明. 一.基础类型 TS的基础类型有 Boolea ...
- Typescript基础类型
1.布尔值__boolean 2.数字__number----除了支持十进制和十六进制字面量,Typescript还支持ECMAScript 2015中引入的二进制和八进制字面量. 3.字符串__st ...
- 2022.07.25 TypeScript基础类型介绍
基础类型: 字符串(string)(String) let first: string = 'niu' // 直接赋值 let fourth: string = `niu` // 模板字符串 let ...
- typescript基础类型(学习笔记非干货)
布尔值 Boolean let isDone:boolean=false; 数字 Number let decLiteral:number=6; let hexLiteral:number=0xf00 ...
- TypeScript完全解读(26课时)_2.TypeScript完全解读-基础类型
2.TypeScript完全解读-基础类型 src下新建example文件夹并新建文件.basic-type.ts.截图中单词拼错了.后需注意一下是basic-type.ts 可以装tslint的插件 ...
- 使用Typescript重构axios(三)——实现基础功能:处理get请求url参数
0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...
- TypeScript 素描-基础类型
博文读自 TypeScript 官方文档而来,不具有学习性,仅是本人学习时记录以供日后翻阅 ,有学习TypeScript的朋友还请去看更为详细的官方文档 TypeScript官网文档中的基础类型, T ...
- TypeScript学习笔记之基础类型
从今天开始学习typescript了,记录ts学习点滴,最后,使用ts结合nodejs开发后端应用,一起共勉吧: typescript最新版本2.6,所有演示代码均基于此版本 开始之前确定安装了如下n ...
- { MySQL基础数据类型}一 介绍 二 数值类型 三 日期类型 四 字符串类型 五 枚举类型与集合类型
MySQL基础数据类型 阅读目录 一 介绍 二 数值类型 三 日期类型 四 字符串类型 五 枚举类型与集合类型 一 介绍 存储引擎决定了表的类型,而表内存放的数据也要有不同的类型,每种数据类型都有自己 ...
- TypeScript 之 基础类型、高级类型
基础类型:https://m.runoob.com/manual/gitbook/TypeScript/_book/doc/handbook/Basic%20Types.html 高级类型:https ...
随机推荐
- SpringBoot多环境日志配置
SpringBoot多环境日志配置 SpringBoot 默认使用 LogBack 日志系统 默认情况下,SpringBoot项目的日志只会在控制台输入. 如果想查询历史日志则无法找到,我们需要一个日 ...
- 检测 NAT 类型
使用 pystun3 pystun3 是一个用于获取 NAT 类型和外部 IP 的 Python STUN 客户端 安装: pip install pystun3 使用: pystun3 结果: NA ...
- vue中代理解决跨域
跨域是什么 简单的讲就是你在一个地方使用另一个地方的资源,被浏览器给挡下来了,不让不用!当然,它挡下来是有自己理由的:为了安全(╬▔皿▔)╯. 解决跨域 我是用vue开发的,就vue代理模式解决跨域说 ...
- 【YashanDB知识库】YAS-00220, utf8 sequence is wrong
[问题分类]功能使用 [关键字]YAS-00220,utf8 sequence is wrong [问题描述]在数据库执行select语句时,或者在exp导出数据库用户时报这个错误,表字段中同时存在n ...
- 使用 nuxi init 创建全新 Nuxt 项目
title: 使用 nuxi init 创建全新 Nuxt 项目 date: 2024/9/6 updated: 2024/9/6 author: cmdragon excerpt: 摘要:本文介绍了 ...
- 深入理解c语言指针与内存
一.将int强制转换为int指针,将int指针强转换为int void f(void) { int *p = (int*)100; //将int强制转换为int指针 printf("%d\n ...
- KernelWarehouse:英特尔开源轻量级涨点神器,动态卷积核突破100+ | ICML 2024
动态卷积学习n个静态卷积核的线性混合,加权使用它们输入相关的注意力,表现出比普通卷积更优越的性能.然而,它将卷积参数的数量增加了n倍,因此并不是参数高效的.这导致不能探索n>100的设置(比典型 ...
- AI 视觉的应用|ZegoAvatar ⾯部表情随动技术解析
一.AI"卷"进实时互动 2021年,元宇宙概念席卷全球,国内各大厂加速赛道布局,通过元宇宙为不同的应用场景的相关内容生态进行赋能.针对"身份"." ...
- GANF: 用于多时间序列异常检测的图增广归一化流《GRAPH-AUGMENTED NORMALIZING FLOWS FOR ANOMALY DETECTION OF MULTIPLE TIME SERIES》(异常检测、多时间序列、DAG、贝叶斯网络、归一化流)
今天是2022年7月12日,差不多小半个月没看论文了,因为模型一直运行不起来+系统搭建的一塌糊涂,今天干脆摆烂,本咸鱼要去看新的论文了(逃避旧工作,bushi). 对了,我们放暑假了,可是我没放暑假. ...
- 5G网络架构的演进趋势
5G网络架构的演进趋势 概述 5G移动通信网络系统包括5GC(5G Core Network,5G核心网)和NG-RAN(Next Generation Radio Access Network,5G ...