Typescnipt 学习笔记
TypeScript 学习笔记
一、什么是 TypeScript
TypeScript 是一种由微软开发的开源编程语言,它是 JavaScript 的一个超集。它添加了静态类型和面向对象的特性,并提供了更强大的工具和功能,以增强 JavaScript 的开发体验。
二、为什么要学习 TypeScript
-
静态类型检查:TypeScript 提供了静态类型检查,可以在编译时捕捉一些常见的错误,提供更安全、更可靠的开发环境。
-
代码智能提示:TypeScript 提供了强大的智能提示功能,可以在编码过程中提供代码补全、参数提示等功能,提高开发效率。
-
更好的维护性和可读性:TypeScript 提供了类、接口、模块等面向对象的特性,使得代码更易于理解、扩展和维护。
-
生态系统丰富:TypeScript 是目前最流行的 JavaScript 超集,拥有庞大的社区和生态系统,可以轻松找到各种开源库和工具。
三、基本语法
-
声明变量:
let a: number = 10; const b: string = "Hello"; -
声明函数:
function add(a: number, b: number): number {return a + b; } -
声明接口:
interface Person {name: string;age: number; } -
声明类:
class Animal {name: string;constructor(name: string) {this.name = name;}sayHello() {console.log("Hello, I'm " + this.name);} }
四、类型注解
TypeScript 具有静态类型检查的能力,可以在变量、函数、参数等地方添加类型注解,帮助编译器检查代码的正确性。
-
声明变量类型:
let num: number = 10; let str: string = "Hello"; -
函数参数和返回值类型:
function add(a: number, b: number): number {return a + b; } -
接口类型注解:
interface Person {name: string;age: number; } function sayHello(person: Person) {console.log("Hello, " + person.name); }
五、类与对象
TypeScript 支持面向对象编程,可以使用类和对象来组织代码。
-
声明类:
class Animal {name: string;constructor(name: string) {this.name = name;}sayHello() {console.log("Hello, I'm " + this.name);} } -
创建对象:
let cat = new Animal("Tom"); cat.sayHello(); -
继承和重写:
class Dog extends Animal {sayHello() {console.log("Woof, I'm " + this.name);} } let dog = new Dog("Spike"); dog.sayHello();
六、模块化
TypeScript 提供了模块化的语法,可以将代码拆分成多个文件,提高代码的可维护性和复用性。
-
导出模块:
// utils.ts export function add(a: number, b: number): number {return a + b; } -
导入模块:
// main.ts import { add } from "./utils"; console.log(add(10, 20));
七、类型推断
TypeScript 在很多情况下可以根据代码的上下文推断出变量的类型,省去了手动添加类型注解的步骤。
let num = 10; // 推断为 number 类型
let str = "Hello"; // 推断为 string 类型
function multiply(a: number, b: number) {return a * b; // 推断为 number 类型
}
八、类型联合
TypeScript 支持声明多个类型的联合类型,用于表示一个变量可以是多种类型之一。
let num: number | string = 10; // 可以是 number 或 string 类型
num = "Hello";
九、类型保护
当使用联合类型时,可以使用类型保护来判断变量的具体类型,并进行相应的操作。
function printLength(strOrArr: string | number[]) {if (typeof strOrArr === "string") {console.log(strOrArr.length); // string 类型有 length 属性} else {console.log(strOrArr.length); // number[] 类型也有 length 属性}
}
十、总结
TypeScript 是一种强类型的 JavaScript 超集,提供了更强大的工具和功能,为 JavaScript 开发提供了更安全、更可靠的环境。学习 TypeScript 可以提高开发效率、代码可维护性和复用性。以上是 TypeScript 的基本语法和特性,希望对你有所帮助。
相关文章:
Typescnipt 学习笔记
TypeScript 学习笔记 一、什么是 TypeScript TypeScript 是一种由微软开发的开源编程语言,它是 JavaScript 的一个超集。它添加了静态类型和面向对象的特性,并提供了更强大的工具和功能,以增强 JavaScript 的开发体验。 二、为什么要学习 …...
如何在 Ubuntu 24.04 (桌面版) 上配置静态IP地址 ?
如果你想在你的 Ubuntu 24.04 桌面有一个持久的 IP 地址,那么你必须配置一个静态 IP 地址。当我们安装 Ubuntu 时,默认情况下 DHCP 是启用的,如果网络上可用,它会尝试从 DHCP 服务器获取 IP 地址。 在本文中,我们将向…...
小恐龙跳一跳源码
小恐龙跳一跳源码是前两年就火爆过一次的小游戏源码,不知怎么了今年有火爆了,所以今天就吧这个源码分享出来了!有喜欢的直接下载就行,可以本地单机直接点击index.html进行运行,又或者放在虚拟机或者服务器上与朋友进行…...
快手二面准备【面试准备】
快手二面准备【面试准备】 前言版权快手二面准备秋招一面中的问题实习一面中的问题计算机网络和操作系统论坛项目登录注册ThreadLocal代替session存储用户秒杀项目登录注册->阿里验证码->rpcsession为什么改为token实现,redis存储用户信息由binlog的用法->…...
贪心算法2(c++)
最大子矩阵 描述 已知矩阵的大小定义为矩阵中所有元素的和。给定一个矩阵,你的任务是找到最大的非空(大小至少是1*1)子矩阵。 比如,如下4*4的矩阵 0- 2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0-2 的最大子矩阵是 9 2 -4 1 -18 这个子矩阵的大小是15。 输入…...
Bugku Crypto 部分题目简单题解(四)
目录 python_jail 简单的rsa 托马斯.杰斐逊 这不是md5 进制转换 affine Crack it rsa python_jail 启动场景 使用虚拟机nc进行连接 输入print(flag) 发现报错,经过测试只能传入10个字符多了就会报错 利用python中help()函数,借报错信息带出flag变…...
软考备考三
操作系统 操作系统概述 功能:组织和管理软件,硬件资源以及计算机系统中的工作流程,控制程序的执行,向用户提供接口。 分类: 1.批处理操作系统 单道批 多道批(宏观上并行,微观上串行)…...
Fortran: select type
Fortran: select type 实现类似C的template函数功能 module M_reduceuse mpi_f08interface reducemodule procedure reduce_scalar,reduce_arrayend interface reducecontains!!https://docs.open-mpi.org/en/v5.0.x/man-openmpi/man3/MPI_Reduce.3.htmlsubroutine reduce_ar…...
QEMU启动Linux内核
在QEMU环境下启动linux内核命令如下: QEMU_AUDIO_DRVnone qemu-system-arm -m 256M -nographic -M versatilepb -kernel /home/yukeyang/myfile/linux-6.6.30/arch/arm/boot/zImage -append "consolettyAMA0 rdinit/bin/sh" -dtb arch/arm/boot/dts/arm/…...
Golang | Leetcode Golang题解之第109题有序链表转换二叉搜索树
题目: 题解: var globalHead *ListNodefunc sortedListToBST(head *ListNode) *TreeNode {globalHead headlength : getLength(head)return buildTree(0, length - 1) }func getLength(head *ListNode) int {ret : 0for ; head ! nil; head head.Next…...
Qt快速入门到熟练(电子相册项目(一))
经过一段时间的学习,相信大家对QT的基本用法都有所了解,从这篇文章开始,我准备记录一下电子相册的项目的一个学习过程。 实现项目创建功能 对于这个电子相册的项目,我并没有在一开始就把所有可能用到的功能模块去事无巨细的考虑周…...
机械臂与Realsense D435 相机的手眼标定ROS包
本教程主要介绍机械臂与 Realsense D435 相机手眼标定的配置及方法。 系统:Ubuntu 20.0.4 ◼ ROS:Noetic ◼ OpenCV 库:OpenCV 4.2.0 ◼ Realsense D435:librealsense sdk(2.50.0)、realsense-ros 功能包&…...
ubuntu使用记录——如何使用wireshark网络抓包工具进行检测速腾激光雷达的ip和端口号
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言wireshark网络抓包工具1.wireshark的安装2.wireshark的使用3.更改雷达ip 总结 前言 Wireshark是一款备受赞誉的开源网络协议分析软件,其功能之强大…...
C#学习指南:重要内容与实用技巧
学习C#编程是一段充满挑战但又非常充实的旅程。以下是我在学习过程中积累的一些经验,希望能对大家有所帮助。 一、掌握基础概念 类及其成员 C#中的类是编程的基础模块。理解类的结构、属性、方法和构造函数是至关重要的。每个类都有其特定的功能,学会如…...
display(a,b)什么意思
在Python中,如果你看到display(a,b)这样的代码,它通常意味着有人正在使用IPython.display模块中的display函数来同时显示两个对象。 IPython.display是Jupyter Notebook和JupyterLab等交互式计算环境的一部分,它提供了一种在笔记本中显示各种…...
SpringBoot3整合阿里云短信服务-1(配置阿里云短信服务)
SpringBoot3整合阿里云短信服务-1(配置阿里云短信服务) 一、开通阿里云短信服务 阿里云官网:阿里云官网 选择产品中企业服务与云通信中的短信服务 选择免费开通 选择快速学习和测试 根据这几个全部配置一下我这里是配置好了所以学习进度是100% 1.1 添加资质 首先选择新增资质 …...
基于HAL库控制LED流水灯
一. 了解并掌握HAL库函数开发方法。安装 stm32CubeMX,配合Keil,使用HAL库方式完成下列任务: 1、重做上一个LED流水灯作业,用GPIO端口完成2只LED灯的周期闪烁。 2、接上,再用GPIO端某一管脚接一个开关(用杜邦…...
利用kubeadm安装k8s集群 以及跟harbor私有仓库下载镜像
目录 环境准备 master(2C/4G) 192.168.88.3 docker、kubeadm、kubelet、kubectl、flannel node01(2C/2G) 192.168.88.4 docker、kubeadm、kubelet、kubectl、flannel node02(…...
明天(周六)下午!武汉Linux爱好者线下沙龙,我们在华中科技大学等你!
2024 年 5月 25 日(周六)下午,我们将在「武汉市洪山区」 珞喻路 1037 号华中科技大学南五楼 613 室举办武汉 Linux 爱好者线下沙龙(WHLUG),欢迎广大 Linux 爱好者来到现场,与我们一同交流技术&a…...
MySQL主从复制(五):读写分离
一主多从架构主要应用场景:读写分离。读写分离的主要目标是分摊主库的压力。 读写分离架构 读写分离架构一 架构一结构图: 这种结构模式下,一般会把数据库的连接信息放在客户端的连接层,由客户端主动做负载均衡。也就是说由客户…...
Onekey终极指南:如何5分钟快速获取Steam游戏清单的免费神器
Onekey终极指南:如何5分钟快速获取Steam游戏清单的免费神器 【免费下载链接】Onekey Onekey Steam Depot Manifest Downloader 项目地址: https://gitcode.com/gh_mirrors/one/Onekey 还在为复杂的Steam游戏清单下载而头疼吗?想要备份游戏资源却不…...
Python PIL 画矩形框
基础代码 from PIL import Image, ImageDraw# 打开图片 img Image.open(your_image.jpg)# 创建绘图对象 draw ImageDraw.Draw(img)# 矩形坐标 (x1, y1, x2, y2) coords (23, 21, 69, 76)# 画矩形框(红色,线宽2) draw.rectangle(coords, ou…...
Sora 2原生接入Unity 6.0:5步完成神经渲染管线嵌入,实测帧率提升47%(附GitHub认证插件)
更多请点击: https://kaifayun.com 第一章:Sora 2与Unity整合 Sora 2作为新一代AI视频生成引擎,其开放API设计天然支持与实时3D引擎的深度协同。Unity 2023.2版本通过URP(Universal Render Pipeline)与C# Job System提…...
[智能体-81]:工程化智能体 = 模型做脑力拆解 + 框架做流程落地。前者是决策者,后者是管理者,tools/function call是内部员工;mcp server是外部资源;
一、全角色人设 & 对应技术组件角色定位对应技术模块核心职责决策者(脑力大脑)大模型 LLM理解目标、任务拆解、逻辑判断、分支决策、内容生成,负责 “想方案、定步骤”管理者(流程总管)智能体编排框架(…...
在多轮对话应用中观察Taotoken计费对成本的影响
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在多轮对话应用中观察Taotoken计费对成本的影响 效果展示类,结合一个需要维护长上下文的多轮对话应用案例,…...
厨房空调技术白皮书:从风冷到水冷,制冷系统在厨房场景中的工程化演进
厨房空调是暖通行业近三年技术迭代最密集的细分品类。从最初的"凉霸"(本质是风扇),到风冷分体式,再到水冷一体式,每代技术都在解决上一代没有覆盖的用户痛点。本文以工程技术视角,梳理四代厨房制…...
别再死记公式了!用Python手写一个卷积层,彻底搞懂CNN里的‘卷’是怎么算的
用Python手写卷积层:从零理解CNN的"卷"运算 当你第一次看到卷积神经网络(CNN)的数学公式时,那些复杂的符号和下标是否让你望而却步?作为计算机视觉领域的基石,CNN的核心在于理解卷积运算的本质。本文将带你用NumPy从零实…...
简单学习 --> SSE
我们使用AI时,AI对我们说的话不会一次性把全部内容弹出来,而是会像流水一样,一点点吐出来,那么这种丝滑的交互体验,背后的核心就是 SSE (Server-Sent Events)。 什么是 SSE? SSE(Server-Sent …...
终极免费音乐解锁工具:打破平台枷锁,让音乐重获自由
终极免费音乐解锁工具:打破平台枷锁,让音乐重获自由 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地…...
NBTExplorer:让Minecraft数据编辑从专业工具变成人人可用的可视化平台
NBTExplorer:让Minecraft数据编辑从专业工具变成人人可用的可视化平台 【免费下载链接】NBTExplorer A graphical NBT editor for all Minecraft NBT data sources 项目地址: https://gitcode.com/gh_mirrors/nb/NBTExplorer 你是否曾经面对Minecraft世界文件…...
