【TS】TypeScript 原始数据类型深度解析

news2024/11/21 19:31:40

鑫宝Code

🌈个人主页: 鑫宝Code
🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础
💫个人格言: "如无必要,勿增实体"


文章目录

  • TypeScript 原始数据类型深度解析
    • 一、引言
    • 二、基础原始数据类型
      • 2.1 `boolean`
      • 2.2 `number`
      • 2.3 `string`
      • 2.4 `null`与`undefined`
      • 2.5 `void`
    • 三、特殊原始数据类型
      • 3.1 `never`
      • 3.2 `any`
    • 四、类型推论
    • 五、最佳实践
      • 5.1 显式类型注解
      • 5.2 避免滥用`any`和`unknown`
      • 5.3 使用`--strict`模式
    • 六、总结

TypeScript 原始数据类型深度解析

在这里插入图片描述
在深入学习TypeScript的高级特性和面向对象编程之前,掌握其基础——原始数据类型至关重要。原始数据类型是构建所有复杂数据结构的基石,它们直接关系到代码的性能、安全性及可读性。本文将系统性地探讨TypeScript中的原始数据类型,包括它们的定义、使用场景、特点以及最佳实践,为你的TypeScript之旅奠定坚实的基础。

一、引言

TypeScript作为JavaScript的超集,不仅继承了JavaScript的全部原始数据类型,还在此基础上新增了额外的类型以增强代码的健壮性和可维护性。理解这些类型及其用途,是写出高质量TypeScript代码的第一步。

二、基础原始数据类型

2.1 boolean

布尔类型是最简单的数据类型,只有两个可能的值:truefalse。它通常用于条件判断和逻辑运算。

let isDone: boolean = false;

2.2 number

number类型用于表示整数和浮点数,JavaScript中的Number类型是双精度64位浮点数。TypeScript并没有区分整数和浮点数,但可以通过类型断言或第三方库来实现更严格的数值类型控制。

let decimal: number = 6;
let hex: number = 0xf00d;
let binary: number = 0b1010;
let octal: number = 0o744;

2.3 string

字符串类型用于存储文本数据,可以用单引号、双引号或模板字符串表示。

let name: string = "Alice";
let greeting: string = `Hello, ${name}!`;

2.4 nullundefined

在TypeScript中,nullundefined是所有类型的子类型,意味着它们可以赋值给任何类型。然而,这往往导致类型不安全,因此推荐使用严格Null检查(--strictNullChecks),以避免意外的nullundefined

let u: undefined = undefined;
let n: null = null;

2.5 void

void类型表示没有任何返回值的函数。通常用于定义不返回值的函数,或者表示没有具体值的类型。

function printMessage(message: string): void {
    console.log(message);
}

三、特殊原始数据类型

3.1 never

never类型表示那些永不会达到终点的代码,例如,一个抛出异常或无限循环的函数。它没有值,且不能被其他类型兼容。

function throwError(message: string): never {
    throw new Error(message);
}

3.2 any

any类型是TypeScript中的“逃脱舱”,它可以代表任何类型。虽然在某些情况下有用,但过度使用会削弱TypeScript的类型安全特性,应尽量避免。

let notSure: any = 4;
notSure = "maybe a string instead";

四、类型推论

在这里插入图片描述

TypeScript具有类型推论机制,能够在没有明确类型注解的情况下推断变量的类型。这简化了代码,但开发者仍应适时使用类型注解以提高代码的可读性和维护性。

let inferredString = "TypeScript is intelligent"; // 类型推论为 'string'

五、最佳实践

5.1 显式类型注解

在这里插入图片描述

尽管TypeScript有强大的类型推论能力,但在关键位置使用显式类型注解可以提高代码的清晰度,尤其是在函数参数和返回值类型上。

5.2 避免滥用anyunknown

尽量减少使用any,除非是在处理遗留代码或第三方库时确实需要。对于不确定类型的值,推荐使用unknown,它比any更安全,要求显式的类型检查和转换。

5.3 使用--strict模式

开启--strict编译选项组,包括--strictNullChecks,可以大幅提升代码质量,强制执行更严格的类型检查规则。

六、总结

TypeScript的原始数据类型构成了其类型系统的基石。通过理解并熟练运用这些类型,开发者不仅能编写出更健壮、更易于维护的代码,还能充分利用现代IDE的智能提示和类型检查功能,显著提升开发效率。随着TypeScript社区的不断成熟和新特性的加入,掌握这些基础变得更加重要,它们是通往TypeScript高级特性和复杂应用开发的必经之路。希望本文能为你深入探索TypeScript的世界铺平道路。

End

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

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

相关文章

推荐系统三十六式学习笔记:原理篇.MAB问题|16|简单却有效的Bandit算法

目录 推荐就是选择MAB问题Bandit算法1.汤普森采样算法2.UCB算法3.Epsilon贪婪算法4.效果对比 冷启动总结 推荐系统的使命就是建立用户和物品之间的连接。建立连接可以理解成;为用户匹配到最佳的物品;但也有另一个理解就是,在某个时间某个位置为用户选择最…

彩虹PLM系统:电子制造业的高效协同平台

彩虹PLM系统:电子制造业的高效协同平台 在当今竞争激烈的电子制造业中,企业亟需一种能够整合全生命周期数据、促进跨部门协同并提升生产效率的解决方案。彩虹PLM系统,作为产品生命周期管理的佼佼者,凭借其卓越的技术实力和丰富的行…

前端基础--Vue3

Vue3基础 VUE3和VUE2的区别 2020年9月18日,Vue.js发布版3.0版本,代号:One Piece 于 2022 年 2 月 7 日星期一成为新的默认版本! Vue3性能更高,初次渲染快55%, 更新渲染快133% 。体积更小 Vue3.0 打包大小减少41%。 同时Vue3可以更好的支持T…

AI 影评生成

电影作为一种重要的艺术形式,承载着无穷的想象力和情感表达。它不仅是娱乐的载体,更是一面照亮人性、社会和历史的镜子。通过电影,观众可以体验不同的世界、感受各种情感,甚至找到共鸣和启发。在这个充满多样性和创意的电影世界中…

自养号测评:引领跨境电商新纪元的策略与实践

在跨境电商的浩瀚蓝海中,自养号测评如同一股不可忽视的潮流,正悄然重塑着行业的未来。这一策略通过精心培育海外买家账号,不仅有效规避了服务商测评的诸多风险,更成为众多卖家提升产品销量与口碑的黑科技运营武器。 核心科技&…

支付宝服务商支付,如何邀请商户入驻?

支付宝服务商支付:如何邀请商户入驻 一、支付宝服务商支付 支付宝服务商支付模式为商户带来了诸多优势。它能够整合多种支付方式,包括扫码支付、刷脸支付、线上支付等,满足不同消费者的支付习惯。同时,提供了强大的财务管理功能…

【MindSpore学习打卡】应用实践-计算机视觉-ShuffleNet图像分类:从理论到实践

在当今的深度学习领域,卷积神经网络(CNN)已经成为图像分类任务的主流方法。然而,随着网络深度和复杂度的增加,计算资源的消耗也显著增加,特别是在移动设备和嵌入式系统中,这种资源限制尤为突出。…

数据结构(JAVA)—代码题

01-数据结构—判断题 02-数据结构—选择题 03 数据结构—多选填空程序填空 ​ 01-顺序表的建立及遍历 import java.util.Iterator; import java.util.LinkedList; import java.util.ListIterator; import java.util.Scanner;public class Main {public static void main(St…

有哪些好的 Stable Diffusion 提示词(Prompt)可以参考?

Docker 作图咒语生成器 docker-prompt-generator 是一个开源项目,可以利用模型反推出提示词,让你偷偷懒,无需琢磨怎么写prompt,只需要找一个差不多的模型反推一下,直接用就好了,支持支持 MidJourney、Stab…

《Linux开发笔记》C语言编译

C语言编译过程 编译过程主要分为四步:预处理、编译、汇编、链接 预处理:主要用于查找头文件、展开宏 编译:把.i文件编译成.s文件 汇编:把.s文件汇编为.o文件 链接:把多个.o文件链接成一个app 以上四个步骤主要由3个命…

颅内感染性疾病患者就诊指南

颅内感染性疾病,即病原体侵入中枢神经系统,导致脑部或脑膜发生炎症的疾病。这些病原体可能是细菌、病毒、真菌或寄生虫等。颅内感染不仅会对脑组织造成损害,还可能引发一系列严重的并发症,如癫痫发作、意识障碍等 颅内感染性疾病的…

电子邮件OTP验证身份认证接口API服务商比较

电子邮件OTP验证身份认证接口API服务商如何正确选择? 电子邮件OTP验证是一种广泛应用且安全的身份认证方式。AokSend将比较几家主要的电子邮件OTP验证身份认证接口API服务商,帮助企业选择合适的解决方案。 电子邮件OTP:验证优势 可以为用户…

UE4_材质_材质节点_DepthFade

一、DepthFade参数 DepthFade(深度消退)表达式用来隐藏半透明对象与不透明对象相交时出现的不美观接缝。 项目说明属性消退距离(Fade Distance)这是应该发生消退的全局空间距离。未连接 FadeDistance(FadeDistance&a…

数字时代的巨变!互联网思维与按效果付费的超强联合!

数字时代企业转型的重大变革 家人们,今天来聊聊数字时代企业数字化转型那些事儿! 在这个时代,企业数字化转型已经是必然趋势啦。蚓链数字化生态系统在帮助企业在转型过程中采用互联网思维,再加上按效果付费的商业交付模式&#xf…

小程序开发平台版源码系统——万能门店小程序功能 前后端分离 带完整的安装代码包以及搭建教程

系统概述 在移动互联网的浪潮中,小程序以其轻量、便捷、无需下载即可使用的特点,迅速成为连接用户与商家的新桥梁。为了满足广大商家快速搭建个性化、高效运营的小程序需求,我们精心打造了“小程序开发平台版源码系统——万能门店小程序功能…

【经典算法题】两数之和

暴力解法 两层for循环&#xff0c;O(n*n) 优化解法 哈希&#xff0c;O(n) class Solution {public int[] twoSum(int[] nums, int target) {Map<Integer, Integer> hashtable new HashMap<Integer, Integer>();for (int i 0; i < nums.length; i) {if (ha…

【Hec-Ras】第一期:软件安装

Hec-Ras软件安装 1 HEC-RAS软件介绍2 HEC-RAS软件下载3 HEC-RAS软件安装4 HEC-RAS软件界面介绍参考 1 HEC-RAS软件介绍 HEC-RAS 是美国陆军工程兵团工程水文中心&#xff08; Hydrologic Engineering Centers, HEC&#xff09;开发的河道水力计算程序&#xff08;River Analys…

前后端分离django-restframework——解决跨域请求

为什么会出现跨域问题&#xff1f; 出于浏览器的同源策略限制。同源策略&#xff08;Sameoriginpolicy&#xff09;是一种约定&#xff0c;它是浏览器最核心也最基本的安全功能&#xff0c;如果缺少了同源策略&#xff0c;则浏览器的正常功能可能都会受到影响。可以说Web是构建…

Redis 7.x 系列【16】持久化机制之 AOF

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Redis 版本 7.2.5 源码地址&#xff1a;https://gitee.com/pearl-organization/study-redis-demo 1. 概述 默认情况下&#xff0c;Redis 使用RDB持久化&#xff0c;但如果进程出现问题或电源中断…

企业如何在当前形势下实现精益生产?

近年来&#xff0c;企业面临诸多挑战&#xff0c;从成本控制到效率提升&#xff0c;每一项决策都关乎着企业的生死存亡。尤其是在全球经济一体化和市场竞争日益激烈的大背景下&#xff0c;企业如何实现精益生产&#xff0c;成为了摆在众多企业家面前的一道难题。今天&#xff0…