当前位置: 首页 > backend >正文

数据类型与推断:TypeScript 的基础

TypeScript 是一种强类型的编程语言,它支持多种数据类型,并且具有强大的类型推断能力。以下是 TypeScript 中常见的数据类型及其使用方式:

在这里插入图片描述

🤍 前端开发工程师、技术日更博主、已过CET6
🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1
🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》
🍚 蓝桥云课签约作者、上架课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入门到实战全面掌握 uni-app》

基本数据类型

数字 (Number)

let num: number = 42;

字符串 (String)

let str: string = 'Hello, TypeScript!';

布尔值 (Boolean)

let isTrue: boolean = true;

数组 (Array)

let arr: number[] = [1, 2, 3];
let arr2: Array<string> = ['a', 'b', 'c'];

元组 (Tuple)

let tuple: [string, number] = ['hello', 42];

枚举 (Enum)

enum Color { Red, Green, Blue }let color: Color = Color.Red;

任意类型 (Any)

let notSure: any = 42;
notSure = 'maybe a string instead';
notSure = false; // okay, definitely a boolean

无返回值 (Void)

function warnUser(): void {
console.log('This function does not return a value.');
}

Null 和 Undefined

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

字面量类型

let trueValue: true = true;
let falseValue: false = false;
let specificString: 'Hello World' = 'Hello World';

类型推断

TypeScript 编译器具有强大的类型推断能力,可以根据上下文自动推断变量的类型。

let x = 3; // 推断为 number 类型
let y = 'hello'; // 推断为 string 类型

函数返回值类型推断

function add(a: number, b: number) {
return a + b; // 推断返回值为 number 类型
}

对象类型推断

let person = {
name: 'John',
age: 30
}; // 推断为 { name: string; age: number }

类型注解

虽然 TypeScript 具有类型推断能力,但在某些情况下,显式地指定类型可以提高代码的可读性和可维护性。

let age: number = 25;
let name: string = 'Alice';

联合类型 (Union Types)

联合类型表示一个值可以是几种类型之一。

let multiType: number | string = 25;
multiType = 'also can be a string';

交叉类型 (Intersection Types)

交叉类型表示一个值同时满足多种类型的约束。

interface Person {
name: string;
}interface HasAge {
age: number;
}type PersonWithAge = Person & HasAge;let person: PersonWithAge = {
name: 'John',
age: 30
};

结论

TypeScript 的数据类型和类型推断功能使得代码更加健壮和易于维护。通过合理使用数据类型和类型注解,可以减少运行时错误,提高代码质量。

http://www.xdnf.cn/news/10430.html

相关文章:

  • wordpress免费主题网站
  • ASP.NET Core SignalR 身份认证集成指南(Identity + JWT)
  • Spring Boot,注解,@ConfigurationProperties
  • 手拆STL
  • 【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 时间事件处理部分)
  • Selenium的底层原理
  • 鸿蒙OSUniApp声纹识别与语音验证:打造安全可靠的跨平台语音应用#三方框架 #Uniapp
  • 第14讲、Odoo 18 实现一个Markdown Widget模块
  • 网络攻防技术一:绪论
  • 如何编写GitLab-CI配置文件
  • 【Linux】Linux文件系统详解
  • Linux 简单模拟实现C语言文件流
  • res.json() vs res.send() 的区别
  • 03.MySQL表的操作详解
  • nc 命令示例
  • MySQ-8.42 MGR 组复制部署及详解
  • 医疗数理范式化:从范式迁移到认知革命的深度解析
  • 微服务面试(分布式事务、注册中心、远程调用、服务保护)
  • 基于GeoTools和OSM路网求解两条道路相交点-以长沙市为例
  • CSS篇-6
  • Java中的线程池七大核心参数设置策略和使用场景参数设计举例
  • 6.01打卡
  • iOS安全和逆向系列教程 第18篇:iOS应用脱壳技术详解与实战
  • python集成inotify-rsync实现跨服务器文件同步
  • GO+RabbitMQ+Gin+Gorm+docker 部署 demo
  • Qwen2.5-VL 视觉编码器的 RMSNorm
  • MQTT入门实战宝典:从零起步掌握物联网核心通信协议
  • Android Stdio 编译 文件生成,以及Gradle
  • 科研学习|科研软件——激活后的Origin导出图时突然出现了demo水印
  • TDenigne 集群可视化管理