详细版易学版TypeScript - 类型声明:字符串数字null布尔undefined数组any对象void类型推断联合类型

news2024/11/21 2:29:54

根据官方 TypeScript 的注意事项,建议不要使用 Number、String、Boolean、Symbol 或 Object

ts各类型声明的代码如下:

一、字符串类型

let str: string = 'hello';
str = 'ts';

二、数字类型

let num: number = 123;
num = 456;

三、布尔类型

let flag: boolean = true;
flag = false;

四、undefined和null

// tsconfig.json 的 "strict": false 时,可以把undefined和null赋值给其他类型的变量
// tsconfig.json 的 "strict": true 时, 🙅不可以把undefined和null赋值给其他类型的变量
let str1: string = undefined;
let num1: number = null;

tsconfig.json 的 "strict": true 时,查看报错:

1、

2、

五、数组

// 1、空数组:可以不规定数组元素的类型
let arr1: [] = [];

// 2、非空数组:需要规定数组元素的类型
// 定义数组方式一:普通写法  元素类型[]
let arr2: number[] = [];
let arr3: number[] = [1, 2, 3];
// 定义数组方式二:泛型写法  Array<元素类型>
let arr4: Array<number> = [];
let arr5: Array<number> = [4, 5, 6];

六、对象

let obj: object = {};
// 不能将 number、string、boolean 赋值给对象
obj = 123; // 报错
obj = 'str'; // 报错
obj = true; // 报错
// tsconfig.json 的 "strict": false 时,可以把undefined和null赋值给obj
// tsconfig.json 的 "strict": true 时, 🙅不可以把undefined和null赋值给obj
obj = null;
obj = undefined;
obj = [];
obj = new String();
obj = String;

假如将 number、string、boolean 赋值给对象,查看报错:

1、

2、

3、

七、any:任何类型

如果我们🤷不知道声明的变量要接受什么类型的值,可以用any,帮助代码通过编译阶段

let test: any = 123;
// 优点:任何类型的值都可以赋给test
test = "str";
test = null;
test = [];
// ......
// 缺点:arr6的每个元素设置成了any后,ts编译器不会对每个元素做类型检查,当js运行代码时第10行代码就会报错
let arr6: any[] = [1, 2, 3, "str", false];
console.log(arr6[0].split(' ')); // js运行时会报错,因为数字1没有split()方法

js运行时报错,查看报错:

八、void:空值

void表示没有任何类型、没有任何返回值。

通常用于函数,void表示该函数没有返回值,调用该函数会得到undefined,相当于在函数内部 return undefined。

function func(): void {
    console.log("这是void");
}
console.log(func()); // undefined

// void只能给undefined定义类型,因为void就是表示没有任何类型
let un1: void = undefined;
// 👆上面那样写没什么意义,因为undefined本身就是一个类型,等价于👇下面这样写
let un2: undefined = undefined;

九、类型推断

ts在变量没有明确指定类型时会推测一个类型

// 1、定义变量时,给变量赋值,值是什么类型ts就会推断这个变量时什么类型
let test1 = '123';
// test1 = false; // 报错

// 2、定义变量时,没给变量赋值,相当于any类型
let test2;
test2 = [];
test2 = {};
test2 = 123;
test2 = null;

十、联合类型

明确指定值可以使用哪几种类型,比any类型更好一点

let all: number | string | boolean = "";
// 联合类型只能访问指定的类型的共有属性和方法,例如它们的toString()方法
console.log(all.toString());
// 要么是访问最后一次赋值的类型的方法,否则会报错
all = true;
console.log(all.split(" ")); // 报错,因为boolean类型没有split()方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/516267.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言实现队列--数据结构

&#x1f636;‍&#x1f32b;️Take your time ! &#x1f636;‍&#x1f32b;️ &#x1f4a5;个人主页&#xff1a;&#x1f525;&#x1f525;&#x1f525;大魔王&#x1f525;&#x1f525;&#x1f525; &#x1f4a5;代码仓库&#xff1a;&#x1f525;&#x1f525;魔…

No.065<软考>《(高项)备考大全》【专项3】《论文》

《论文》 1 论文部分相关1.1 考试相关1.2 考试核心相关1.3 历年考试分析1.4 复习建议1.5 评分标准1.5.1 评分的几个方面1.5.2 不及格的几种类型1.5.3 扣分项1.5.4 加分项 1.6 时间进度安排1.7 如何准备 2 必背核心知识 - 10大领域47个过程3 论文写作技巧3.1 论文架构3.2 论文题…

SpringBoot——引导类的简单介绍

简单介绍&#xff1a; 之前我们就说到过引导类&#xff0c;之不过当时就是简单的说了一下这个名字&#xff0c;让大家记住我们运行的程序的学名叫做引导类&#xff0c;但是我们并没有进入看过&#xff0c;介绍过它的作用&#xff0c;这次我们就来简单的介绍一下这个类的作用。…

[NLP] SentenceTransformers使用介绍

SentenceTransformers 是一个可以用于句子、文本和图像嵌入的Python库。 可以为 100 多种语言计算文本的嵌入并且可以轻松地将它们用于语义文本相似性、语义搜索和同义词挖掘等常见任务。 该框架基于 PyTorch 和 Transformers&#xff0c;并提供了大量针对各种任务的预训练模型…

STEP7-MicroWin SMART中修改变量注释的具体方法(绝对寻址+符号寻址)

STEP7-MicroWin SMART中修改变量注释的具体方法(绝对寻址+符号寻址) 如下图所示,我们可以在符号表中定义变量的符号名称以及注释信息, 使用时需注意以下事项: 1.在 STEP 7-Micro/WIN SMART 软件中,可以建立多个符号表,但不允许将相同的符号名多次用作全局符号赋值,在单…

1707_Python中的多成员处理

全部学习汇总&#xff1a; GreyZhang/python_basic: My learning notes about python. (github.com) 欢迎路过的YUAN类朋友们&#xff0c;希望我们能够相互交流共同成长。如有错误或者不足希望及时指点指出&#xff0c;不胜感激&#xff01;以下是我的联系方式&#xff1a; E…

Kali-linux识别活跃的主机

尝试渗透测试之前&#xff0c;必须先识别在这个目标网络内活跃的主机。在一个目标网络内&#xff0c;最简单的方法将是执行ping命令。当然&#xff0c;它可能被一个主机拒绝&#xff0c;也可能被接收。本节将介绍使用Nmap工具识别活跃的主机。 网络映射器工具Nmap Nmap是一个…

JavaScript经典教程(七)-- JavaScript中级

197&#xff1a;in、预解析、变量提升、对象引用、Date对象 1、预解析 即&#xff0c;把var的变量在&#xff0c;作用域下&#xff0c;提前&#xff1b; &#xff08;1&#xff09;JS代码运行原理 预先解析&#xff0c;JS第一次解析代码叫预解析。 JS本身会解析两次代码&a…

vue非单文件组件

非单文件组件指的是&#xff1a;一个文件中包含了多个组件。 Vue 中使用组件的三大步骤&#xff1a;1. 创建组件、2. 注册组件、3. 使用组件。 组件使用流程【第一步&#xff1a;创建组件】 利用 Vue.extend() 方法创建组件: // 第一步&#xff1a;创建 frameHead 组件 cons…

前端015_标签模块_删除功能

标签模块_删除功能 1、需求分析2、EasyMock 添加模拟接口3、Api 调用接口4、测试1、需求分析 当点击删除按钮后, 弹出提示框。点击确定后,执行删除并刷新列表数据 确认消息弹框参考:https://element.eleme.cn/#/zh-CN/component/message-box#que-ren-xiao-xi 2、EasyMock …

【AUTOSAR】【以太网】TCPIP

目录 一、概述 二、约束和假设 三、依赖模块 3.1 EthIf 3.2 EthSM 3.3 SoAd 3.4 KeyM 3.5 CSM 四、功能说明 4.1 系统扩展性 4.2 IPv4 4.2.1 IPv4 4.2.2 ARP 4.2.3 Auto-IP 4.2.4 ICMP 4.3 IPv6 4.4 IPSec 4.5 基于IP的协议 4.5.1 本地地址表 4.5.2 UDP 4…

音视频八股文(12)-- ffmpeg 音频重采样

1重采样 1.1 什么是重采样 所谓的重采样&#xff0c;就是改变⾳频的采样率、sample format、声道数等参数&#xff0c;使之按照我们期望的参数输出。 1.2 为什么要重采样 为什么要重采样&#xff1f;当然是原有的⾳频参数不满⾜我们的需求&#xff0c;⽐如在FFmpeg解码⾳频…

【C++初阶】类和对象(四)

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;C初阶 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 上一篇博客&#xff1a;【C初阶】…

(二)zookeeper实战——zookeeper集群搭建

前言 本节内容我们主要介绍一下如何在centos系统下搭建一套高可用的zookeeper集群&#xff0c;zookeeper是我们常用的中间键之一&#xff0c;例如使用zookeeper实现分布式锁、Hadoop集群高可用、kafka集群高可用等等。我们以以下三台服务器为例&#xff1a; zookeeper服务器 I…

R语言tidyverse教程:ggplot2绘图初步

文章目录 基本流程渲染美化坐标轴设置 R语言系列&#xff1a; 编程基础&#x1f48e;循环语句&#x1f48e;向量、矩阵和数组&#x1f48e;列表、数据帧排序函数&#x1f48e;apply系列函数tidyverse&#xff1a;readr&#x1f48e;tibble 基本流程 ggplot2有其独特的绘图语…

【算法题】LCP 74. 最强祝福力场

插&#xff1a; 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 坚持不懈&#xff0c;越努力越幸运&#xff0c;大家一起学习鸭~~~ 题目&#xff1a; 小扣在探索丛林的过程中&#xff0…

MPLS格式和802.1q帧格式

一.MPLS IETF开发的多协议标记交换&#xff08;MPLS)把第2层的链路状态信息&#xff08;带宽、延迟、利用率等&#xff09;集成到第3层的协议数据单元中&#xff0c;从而简化和改进了第3层分组的交换过程 。理论上&#xff0c;MPLS支持任何第2层和第3层协议。MPLS包头的位置界…

web集群第一次作业

目录 一. 简述静态网页和动态网页的区别 二. 简述 Web1.0 和 Web2.0 的区别 三. 安装tomcat8&#xff0c;配置服务启动脚本&#xff0c;部署jpress应用。 一. 简述静态网页和动态网页的区别 1. 首先&#xff0c;两者的页面资源特征不同&#xff1a; 静态网页处理文件类型有…

【Linux】进程信号(完整版) --- 信号产生 信号保存 信号捕捉 可重入函数 volatile SIGCHLD信号等

&#x1f34e;作者&#xff1a;阿润菜菜 &#x1f4d6;专栏&#xff1a;Linux系统编程 文章目录 一、预备知识二、信号产生1. 通过终端按键产生信号1.1 signal()1.2 core dump标志位、核心存储文件 2.通过系统调用向进程发送信号3.由软件条件产生信号3.1 alarm函数和SIGALRM信号…

华为OD机试真题 Java 实现【知识图谱新词挖掘1】【2023Q1 100分】

一、题目描述 小华负责公司知识图谱产品&#xff0c;现在要通过新词挖掘完善知识图谱。 新词挖掘: 给出一个待挖掘文本内容字符串Content和一个词的字符串word&#xff0c;找到content中所有word的新词。 新词&#xff1a;使用词word的字符排列形成的字符串。 请帮小华实现新词…