深入了解TypeScript:从基础语法到高级特性

在当今的软件开发领域中,TypeScript(TS)作为JavaScript的超集语言,越来越受到开发者的关注和喜爱。它扩展了JavaScript的语法,并引入了静态类型检查,为开发者提供了更好的开发工具和更可靠的代码结构。本篇博客将带你深入了解TypeScript的基础语法和一些高级特性,通过代码示例来解释说明。

基础类型

TypeScript支持多种基础数据类型,让我们先来了解一下常用的几种类型,并通过代码示例进行说明。

布尔值(boolean)

let isDone: boolean = false;

数字(number)

let decLiteral: number = 2023;
let binaryLiteral: number = 0b11111100111;
let octalLiteral: number = 0o3747;
let hexLiteral: number = 0x7e7;

字符串(string)

let name: string = "Jacky";

数组(array)

let list: number[] = [1, 2, 3];
let anotherList: Array<number> = [4, 5, 6];

元组(tuple)

let x: [string, number];
x = ['hello', 10]; // OK
x = [10, 'hello']; // Error

枚举(enum)

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

未知类型(unknown)

let notSure: unknown = 4;
notSure = 'maybe a string instead';
notSure = false;

空值(void)

function test(): void {console.log('This function is void');
}

Null 和 Undefined

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

联合类型(union types)

let myFavoriteNumber: string | number;
myFavoriteNumber = 'seven';
myFavoriteNumber = 7;

以上是TypeScript中的一些常用基础类型,通过代码示例我们可以更直观地了解它们的使用方法。

条件语句

条件语句用于根据不同的条件执行不同的代码块。下面我们通过代码示例来介绍TypeScript中的条件语句。

if 语句

let num: number = 5;
if (num > 0) {console.log('数字是正数');
}

if…else 语句

let num: number = 12;
if (num % 2 == 0) {console.log('偶数');
} else {console.log('奇数');
}

if…else if…else 语句

let num: number = 2;
if (num > 0) {console.log(num + ' 是正数');
} else if (num < 0) {console.log(num + ' 是负数');
} else {console.log(num + ' 为0');
}

switch…case 语句

let grade: string = 'A';
switch (grade) {case 'A': {console.log('优');break;}case 'B': {console.log('良');break;}case 'C': {console.log('及格');break;}case 'D': {console.log('不及格');break;}default: {console.log('非法输入');break;}
}

通过以上代码示例,我们可以清晰地了解TypeScript中条件语句的使用方法。

函数

函数是一组用于执行特定任务的语句集合。TypeScript中的函数可以有参数和返回值,我们通过代码示例来详细介绍。

声明函数类型

function add(x: number, y: number): number {return x + y;
}let myAdd = function (x: number, y: number): number {return x + y;
};

可选参数

function buildName(firstName: string, lastName?: string) {if (lastName)return firstName + ' ' + lastName;elsereturn firstName;
}let result1 = buildName('Bob');
let result2 = buildName('Bob', 'Adams');

剩余参数

function getEmployeeName(firstName: string, ...restOfName: string[]) {return firstName + ' ' + restOfName.join(' ');
}let employeeName = getEmployeeName('Joseph', 'Samuel', 'Lucas', 'MacKinzie');

箭头函数

let testArrowFun = (num: number) => {if (num > 0) {console.log(num + ' 是正数');} else if (num < 0) {console.log(num + ' 是负数');} else {console.log(num + ' 为0');}
}testArrowFun(-1);

通过以上代码示例,我们可以了解到TypeScript中函数的不同定义方式和使用方法。

TypeScript支持基于类的面向对象编程,类是对象的蓝图,描述了对象的属性和方法。下面我们通过代码示例来介绍TypeScript中类的使用。

class Person {private name: string;private age: number;constructor(name: string, age: number) {this.name = name;this.age = age;}public getPersonInfo(): string {return `My name is ${this.name} and age is ${this.age}`;}
}let person1 = new Person('Jacky', 18);
person1.getPersonInfo();
class Employee extends Person {private department: string;constructor(name: string, age: number, department: string) {super(name, age);this.department = department;}public getEmployeeInfo(): string {return this.getPersonInfo() + ` and work in ${this.department}`;}
}let person2 = new Employee('Tom', 28, 'HuaWei');
person2.getPersonInfo();
person2.getEmployeeInfo();

通过以上代码示例,我们可以了解到TypeScript中类的定义、继承和使用方法。

模块

随着应用程序的复杂性增加,将代码拆分为多个模块是一种良好的实践。TypeScript支持使用模块来组织和管理代码,下面是一个简单的模块示例。

export class NewsData {title: string;content: string;imagesUrl: Array<NewsFile>;source: string;constructor(title: string, content: string, imagesUrl: Array<NewsFile>, source: string) {this.title = title;this.content = content;this.imagesUrl = imagesUrl;this.source = source;}
}import { NewsData } from '../common/bean/NewsData';

通过以上代码示例,我们可以了解到TypeScript中如何导出和导入模块。

迭代器

TypeScript支持使用迭代器来遍历可迭代对象,下面是一个简单的迭代器示例。

let someArray = [1, "string", false];for (let entry of someArray) {console.log(entry);
}

通过以上代码示例,我们可以了解到TypeScript中如何使用迭代器对可迭代对象进行遍历。


通过本篇博客,我们深入了解了TypeScript的基础语法和一些高级特性。我们通过代码示例详细介绍了基础类型、条件语句、函数、类、模块和迭代器等内容。希望这篇博客能够帮助你更好地理解和应用TypeScript,提升你的开发效率和代码质量。如果你对TypeScript还有更多的疑问和需求,可以继续深入学习TypeScript的官方文档和相关资料。Happy coding!

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

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

相关文章

Linux环境下的进程间通信(IPC)机制:DBus、共享内存、套接字与管道详解

在Linux环境中&#xff0c;进程间通信&#xff08;IPC&#xff09;是一个核心概念&#xff0c;允许运行中的进程相互交换数据。IPC机制包括但不限于dbus-daemon、共享内存、套接字和管道。本文将深入探讨这些机制的工作原理、用途以及它们之间的差异。 1、dbus-daemon DBus是…

TinyEMU源码分析之中断处理

TinyEMU源码分析之中断处理 1 触发中断2 查询中断2.1 查询中断使能与pending状态&#xff08;mie和mip&#xff09;2.2 查询中断总开关与委托&#xff08;mstatus和mideleg&#xff09;2.2.1 M模式2.2.2 S模式2.2.3 U模式 3 处理中断3.1 获取中断编号3.2 检查委托3.3 进入中断3…

软件设计师-基础知识科目-数据库技术基础识9

九、数据库技术基础识&#xff1a; 数据库设计阶段&#xff1a; 需求分析阶段 -> 确定系统边界。逻辑设计阶段 -> 关系规范化分。 数据库三级模式和两层映射&#xff1a; 三级模式&#xff1a; 外模式、概念模式&#xff08;也称模式&#xff09;、内模式&#xff08…

Python实现植物大战僵尸

"植物大战僵尸" 是一个复杂的游戏&#xff0c;涉及到图形界面、游戏逻辑、音效、动画等多个方面。要用Python实现这样的游戏&#xff0c;你需要用到一些额外的库&#xff0c;比如pygame来处理图形和音效&#xff0c;numpy来处理游戏数据等。 以下是一个简单的示例&a…

新员工入职培训时长缩短36%!智能陪练产品再升级

诸多预测认为&#xff0c;2024 年将成为国内大模型产业应用爆发的元年。中关村科金作为领先的对话式 AI 技术解决方案提供商&#xff0c;自主研发的智能陪练产品&#xff0c;以学、练、考、培一体化的方式&#xff0c;为企业提供全方位的综合培训服务。 借助大模型技术方面的突…

视频号小店新商机逐渐爆发,高门槛仍挡不住商家前进的脚步!

大家好&#xff0c;我是电商花花。 不知道大家有没有发现一件很有意思的事情&#xff0c;就是现在有越来越多的商家涌入抖音小店&#xff0c;部分商家还是想在视频号小店里博一丝机会。 我们都知道视频号小店是除了抖音小店之外&#xff0c;最火热的项目了&#xff0c;部分商…

C 共用体

共用体是一种特殊的数据类型&#xff0c;允许您在相同的内存位置存储不同的数据类型。您可以定义一个带有多成员的共用体&#xff0c;但是任何时候只能有一个成员带有值。共用体提供了一种使用相同的内存位置的有效方式。 定义共用体 为了定义共用体&#xff0c;您必须使用 u…

SpringBoot多数据源配置及使用

1.application.properties数据配置 首先现在配置文件中定义三个数据库相关信息 # 数据库1 targetLibraryMain.datasource.url jdbc:kingbase8://127.0.0.1:54321/DATA_ONE?useUnicodetrue&characterEncodingutf8&serverTimezoneGMT%2B8&allowMultiQueriestrue …

JavaScript核心基础(李立超2022版)

2022年李立超老师最新JavaScript基础主要内容包括: JS基本语法、变量、数据类型&#xff08;原始值和类型转换等&#xff09;、运算符、流程控制语句、对象、 函数&#xff08;箭头函数、作用域、作用域链、高阶函数、闭包、递归等&#xff09;、 面向对象&#xff08;类、属性…

山 蓝桥杯 java

题目 这天小明正在学数数。 他突然发现有些正整数的形状像一挫 “山”, 比如 123565321、 145541123565321它 们左右对称 (回文) 且数位上的数字先单调不减, 后单调不增。 小朋数了衣久也没有数完, 他惒让你告诉他在区间 [2022,2022222022] 中有 多少个数的形状像一座 “山”。…

19(20)-1(3)-CSS3 平面 2D 变换+CSS3 过渡

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 ✍一、CSS3 平面 2D 变换&#x1f48e;1 坐标轴&#x1f48e;2 transform 语法…

KubeSphere 社区双周报|2024.03.29-04.11

KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过 commit 的贡献者&#xff0c;并对近期重要的 PR 进行解析&#xff0c;同时还包含了线上/线下活动和布道推广等一系列社区动态。 本次双周报涵盖时间为&#xff1a;2024.03.29-04.11…

简单了解仿真测试

仿真测试是通过使用模型或者虚拟环境来模拟实际系统的行为和性能。它可以应用于各种领域&#xff0c;包括软件开发、工程设计、人工智能等等。 通常&#xff0c;仿真测试包括以下几个步骤&#xff1a; 确定测试目标&#xff1a; 首先确定要测试的系统或组件&#xff0c;并且明…

moment

文章目录 时间格式化 时间格式化 moment().format(YYYY-MM-DD HH:mm:ss)

C/C++ 入门(5)内存管理

个人主页&#xff1a;仍有未知等待探索-CSDN博客 专题分栏&#xff1a;C 欢迎指教&#xff01; 目录 一、内存分布 二、C中动态内存管理 new delete 三、C语言的动态内存管理 四、operator new 和operator delete函数 operator new operator delete 五、new和delete的…

Kafka概述

目录 1、为什么需要消息队列&#xff08;MQ&#xff09; 2、使用消息队列的好处 3、消息队列的两种模式 4、Kafka 定义 5、Kafka 简介 6、Kafka 的特性 7、Kafka 系统架构 8、Partation 数据路由规则 9、分区的原因 1、为什么需要消息队列&#xff08;MQ&#xff09; …

细胞世界:4.细胞分化(划区域)与细胞衰老(设施磨损)

(1)细胞凋亡 1. 概念&#xff1a;细胞凋亡可以比作城市的规划者主动拆除某些建筑来更新城市或防止危险建筑对市民的潜在伤害。这是一个有序的过程&#xff0c;由城市&#xff08;细胞内部&#xff09;的特定规划&#xff08;基因&#xff09;所决定。 2. 特征&#xff1a;细…

简述Kafka的高可靠性

什么叫可靠性&#xff1f; 大家都知道&#xff0c;系统架构有三高&#xff1a;「高性能、高并发和高可用」&#xff0c;三者的重要性不言而喻。 对于任意系统&#xff0c;想要同时满足三高都是一件非常困难的事情&#xff0c;大型业务系统或者传统中间件都会搭建复杂的架构来…

2024 年 AI代码助手AI Coding Assistant智能工具

AI代码助手&#xff08;AI Coding Assistant&#xff09;是一种利用人工智能帮助开发人员更快、更准确地编写代码的软件工具。 它可以通过根据提示生成代码或在你实时编写代码时建议自动完成代码来实现此目的。 以下是AI代码助手可以做的一些事情&#xff1a; 与你使用的流行代…

PointNet++函数square_distance(src, dst):计算两组点之间的欧式距离(代码详解)

文章目录 一、计算两组点之间的欧式距离二、举例三、中间结果输出 一、计算两组点之间的欧式距离 def square_distance(src, dst):"""Calculate Euclid distance between each two points.src^T * dst xn * xm yn * ym zn * zm&#xff1b;sum(src^2, dim-1…