【 TypeScript 】TypeScript的数据类型有哪些?

1. 是什么

ts和js 几乎一样,拥有相同的数据类型,另外在js基础上提供了更加实用的类型供开发使用

在开发阶段,可以为明确的变量定义某种类型,这样ts就能在编译阶段进行类型检查,当类型不符合预期结果的时候就会出现错误提示

2. 有哪些

typescript的数据类型主要有如下

  • boolean (布尔类型)
  • number(数字类型)
  • string (字符串类型)
  • array (数组类型)
  • tuple (元组类型)
  • enum (枚举类型)
  • any (任意类型)
  • null和undefined 类型
  • void 类型
  • never类型
  • object 类型

2.1 boolean (布尔类型)

let flag:boolean=true;
flag="12345" //错误
flag=false   //正确

2.2 number(数字类型)

数字类型和JS一样,ts的数值类型都是浮点数,可以支持二进制、八进制、十进制和十六进制

let flag:number=123;
flag="12345" //错误
flag=456   //正确

2.3 string (字符串类型)

和JS一样,可以使用双引号和单引号表示字符串

let str:string='12333';
str='hello'   //正确

作为超集,也可以使用模版字符串进行包裹,通过${}嵌入变量

let name:string='superrui';
let age:number=18;
let info:string=` hello my name is ${ name }`

2.4 array (数组类型)

跟JS一样,通过[]进行包裹,有两种写法:
方式一:元素类型后面接上[ ]

let arr:string[]=['11','22','33']
arr=['33','44','55']

方式二:使用数组泛型,Array<元素类型>:

let arr:Array<number> = [1,2];
arr=[3,4]

2.5 tuple (元组类型)

允许表示一个已知元素数量和类型的数组,各元素的类型不必相同

let tupleArr:[Number,String,boolean];
tupleArr=[12,'23',true] //ok
tupleArr=[12,'23'] //no

赋值类型、位置、个数需要和定义的类型、位置、个数 一致

2.6 enum (枚举类型)

是对JS标准数据类型的一个补充,使用枚举类型可以为一组数值赋予友好的名字

enum Color {red,green,yellow}
let A:Color=Color.red

2.7 any (任意类型)

可以指定任何类型的值,在编程阶段还不清楚类型的变量制定一个 类型,不希望类型检查器对这些值进行检查而直接让他们通过编译阶段的检查,这时候可以使用any类型
使用any类型允许被赋值为任意类型,甚至可以调用其属性、方法

let num:any=213;
num='str';
num=456

定义存储各种类型数据的数组时,代码如下:

let arrList:any[]=[1,'str',false];
arrList[1]=200

2.8 null和undefined 类型

在JS中null 是一个只有一个值的特殊 类型,表示一个控对象引用,而undefined表示一个没有设置值的变量
默认情况下 null 和 undefined 是所有类型的子类型,就是说你可以吧null和undefined赋值给number类型的变量

let num:number|undefined; //数值类型或者undefined

但是ts 配置了–strictNullChecks 标记。null和undefined只能赋值给void和他们各自

2.9 void 类型

用于标识方法返回值的类型,表示该方法没有返回值

function hi():void{alert ('hi rui ')
}

2.10 never类型

never是其他类型(包括null和undefined的子类型),可以赋值给任何类型,代表从不会出现的值
但是没有类型是never的子类型,这意味着never的变量只能被never类型所赋值。
never类型一般用来指定哪些总是会抛出异常、无限循环

let a:never;
a=123; //错误写法
a=(()=>{ //正确写法throw new Error('错误')
})//返回never的函数必须存在无法到达的终点
function error(message:string):never{throw new Error(message)
}

2.11 object 类型

对象类型,非原始类型,常见的形式通过{}进行包裹

let obj:object;
obj={name:'superrui',age:18}

3. 总结

和JS基本一致,也分成:

  • 基本数据类型
  • 引用数据类型

在基础类型上,ts 添加了void any enum等原始类型

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

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

相关文章

人类的三大非理性怪癖

人们对自己拥有的东西迷恋到不能自拔。 人们总是把注意力集中到白己会失去什么&#xff0c;而不是会得到什么。 人们经常假定别人看待交易的角度和自己一样。 所有权依恋 一个人总是对于自己拥有所有权的物件给予更高的评价。 所有权效应的特性 1.人们不仅对白己拥有所有…

工具推荐:有哪些工具可以搭建本地知识库?

大家是否心头藏着一个个的记录本&#xff0c;里面写满了工作日常、业务过程、个人想法等等&#xff0c;但是随着这个记录本日渐丰满&#xff0c;寻找特定信息的难度也在逐渐增大。如果有一个空间&#xff0c;既像你的记录本一样方便记录&#xff0c;又可以快速检索&#xff0c;…

19113133262(微信同号)2024年环境能源与全球市场营销国际学术会议(ICEEGM 2024)

2024年环境能源与全球市场营销国际学术会议&#xff08;ICEEGM 2024) 会议主题: (主题包括但不限于, 更多主题请咨询会务组苏老师) 节能技术 煤矿工程与技术 能源存储技术 可再生能源 热能与动力工程 能源工程与环境工程 可再生能源技术和系统 能源安全和清洁利用 矿…

1688平台最关键的接口接入实例|获得1688商品详情| 按关键字搜索商品| 按图搜索1688商品(拍立淘)| 获得淘口令真实url

参数说明 通用参数说明 version:API版本key:调用key,测试key:test_api_keyapi_name:API类型[item_get,item_search]cache:[yes,no]默认yes&#xff0c;将调用缓存的数据&#xff0c;速度比较快result_type:[json,xml,serialize,var_export]返回数据格式&#xff0c;默认为jsonl…

前端各框架、优缺点及应用场景

React、Angular和Vue 是目前最流行的选择。以下是这些框架的优缺点、适用场景以及一些常用代码示例&#xff1a; 1. React 优点&#xff1a; 灵活性和高性能大量的第三方库和组件虚拟DOM 提高页面性能 缺点&#xff1a; 学习曲线较陡可能需要额外配置 适用场景&#xff1a; 复…

springboot的maven多模块如何混淆jar包

springboot的maven多模块如何混淆jar包 一.简介二. 示例2.1 基本配置2.2 结果 三. 错误3.1 错误13.2 错误2 四. 参考文章 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱 一.简介 …

[Linux][CentOs][Mysql]基于Linux-CentOs7.9系统安装并配置开机自启Mysql-8.0.28数据库

目录 一、准备工作&#xff1a;获取安装包和相应工具 &#xff08;一&#xff09;所需安装包 &#xff08;二&#xff09;安装包下载链接 &#xff08;三&#xff09;在服务器上创建文件夹并上传安装包 二、安装MySql &#xff08;一&#xff09;删除系统自带的mariadb …

什么是内存泄露?

内存泄漏是指在程序运行过程中&#xff0c;由于某些原因导致程序未能正确释放不再需要的内存&#xff0c;从而造成系统内存不断累积或者被占用过多的情况。内存泄漏可能会导致程序性能下降、系统变慢甚至崩溃等问题。 常见导致内存泄漏的原因包括&#xff1a; 未释放动态分配…

华为三层交换机:ACL的基本实验

实验要求&#xff1a; PC1不允许访问PC3&#xff0c;PC3可以访问PC1 分析问题&#xff1a; PC1不允许访问PC3&#xff0c;问题中含有“目标地址”则我们需要设置目标地址&#xff0c;这样基本ACL是不行的&#xff0c;必须使用高级ACL [sw1]acl ? INTEGER<2000-2999>…

发那科数控机床FanucCNC(NCGuide)仿真模拟器配置和数据采集测试

开发日记3.12 此篇用于记录发那科数控机床(Fanuc CNC)采集程序开发中&#xff0c;用虚拟机做测试时&#xff0c;虚拟机的配置和使用以支持采集软件开发和测试。 配置虚拟机使用仿真软件 下载VMware15 「链接&#xff1a;https://pan.xunlei.com/s/VNsl9Gmb14ANBiiNlsT7vA2LA…

常见的JCL Abend code

第一篇主要讲三个&#xff0c;SB37,S806,S804 常见的JCL Abend code 一 SB37二、S8062.1 没有指定LIB库2.2 没有指定LOAD库 三 S804 一 SB37 ​ 37系列的错误一般是指卷的空间不够&#xff0c;SB37&#xff0c;SE37&#xff0c;SE37&#xff0c;基本上都是空间不够 ​ 如果指…

ORDaR23 数据集 json 标签文件结构一览

ORDaR23 数据集 json 标签文件结构一览 打印标签键值对键的代码 import jsondef print_keys_with_indent(json_data, indent0):if isinstance(json_data, dict):for key, value in json_data.items():print(" " * indent key)if isinstance(value, dict) or isins…

Spring核心接口:InstanceStrategy接口

什么是CGLIB实例化策略&#xff1f; CGLIB实例化策略是Spring中用来控制CGLIB创建代理对象的策略。在Spring中&#xff0c;CGLIB通过一个名为Enhancer的类来创建代理对象。Enhancer会为被代理类创建子类&#xff0c;并在子类中插入一些拦截器逻辑。CGLIB创建代理对象的过程是通…

C++代码实现桶排序

桶排序 动态图链接&#xff1a;Bilibili桶排序动态图 #include <iostream> #include <vector> #include <algorithm> using namespace std;void bucketSort(vector<int>& arr, int maxVal) {int n arr.size();vector<vector<int>> …

选择格行随身WiFi代理的八大理由:揭秘其无可比拟的优势!2024适合普通人的靠谱创业项目!

在竞争激烈的创投圈中中&#xff0c;格行随身WiFi以其独特的八大优势脱颖而出&#xff0c;成为创业者的首选品牌。那么&#xff0c;它究竟凭借什么成为了创业黑马呢&#xff1f;接下来&#xff0c;让我们一一揭秘。 01l品牌运营 行业唯一做统一发货&#xff0c;统一售后的品牌…

Java中 final、finally、finalize 有什么区别?

1、典型回答 final、finally、finalize 是 Java 中三个不同的关键字&#xff0c;它们除了长得像之外&#xff0c;其他的&#xff08;作用和含义&#xff09;完全不同。 它们三个的区别就好像&#xff1a;雷、雷锋、雷峰塔之间的区别。&#xff08;是三个完全不同的东西&#…

深入理解Vue3中利用mitt:实现轻量级事件监听与触发

深入理解Vue3中利用mitt&#xff1a;实现轻量级事件监听与触发 摘要&#xff1a;本文将介绍如何在Vue3中利用mitt库实现轻量级的事件监听与触发。我们将详细介绍mitt库的特性和使用方法&#xff0c;并通过实际示例展示如何在Vue3组件中应用mitt。 一、引言 在前端开发中&…

IOS版Emby解锁教程

IOS版Emby解锁教程 1.App脱壳 轻松签或其它软件&#xff0c;或者别人分享 2.进入修改脚本 进入Emby.app/www目录&#xff0c;打开apploader.js文件&#xff0c;在 function(onDone) {这段代码后面加入 (window.fetch1window.fetch),(window.fetch(url,options)>{if(ur…

5.4.x内核模块密码算法调用逻辑分析

一、以下是请求过程&#xff1a; static inline int crypto_wait_req(int err, struct crypto_wait *wait) {switch (err) {case -EINPROGRESS:case -EBUSY:wait_for_completion(&wait->completion);reinit_completion(&wait->completion);err wait->err;br…

android studio 老项目突然编译不了,一直下载gradle以及插件

以前这个项目一直可以编译放了几个月&#xff0c;我换了一个windows帐号登录&#xff0c;结果编译不了 之前使用的是gradle-7.2.0&#xff0c;现在由于这几天开会&#xff0c;可能网络不畅通更新不了插件。 原因一&#xff0c;Google仓库连不上 build.gradle注释掉google()和…