学习笔记——TypeScript

news2024/11/15 20:09:41

文章目录

    • 介绍
    • TS增加类型支持的原因:
    • 安装typescript
    • 运行TS文件
    • TS常用类型
      • 类型标注位置
      • 字符串类型、数字类型、布尔类型
      • 字面量类型
      • interface类型
      • class类
    • 总结

开发阶段规范代码,使代码更严谨

介绍

  • TypeScript(简称:TS)式微软推出的开源语言
  • TSJS的超集(TS包含JS)
  • TS = Type + JS(在JS基础上增加了类型支持
  • TS文件扩展名为.ts
  • TS可编译成标准的JS,并且在编译时进行类型检查

示例:TS与JS的比较
 // TS代码:有明确的类型,即:number(数值类型)
 let age1: number = 18

 //	JS代码: 无明确的类型
 let age2 = 18



TS增加类型支持的原因:

  • TS属于静态类型编程语言,JS属于动态类型编程语言
  • 静态类型在编译期做类型检查,动态类型在执行期做类型检查
  • 对于JS而言,需要等到代码执行时才能发现错误,相对来说发现问题比较晚
  • 对于TS而言,在代码编译时就可以发现错误,相对来说发现问题比较早
  • 配合VSCode开发工具给,TS可以提前到在编写代码的同时就发现代码中的错误,减少找bug、改bug的时间


安装typescript

npm install -g typescript

运行TS文件

TS文件不能直接运行,需要将ts文件编译成js文件,编译后js文件中类型会擦除

// 运行TS代码需要先编译,可编译成标准的二js,并且可以在编译时进行类型检查
tsc 文件名.ts

// 运行TS文件
node 文件名.js



TS常用类型

image.png


类型标注位置

  • 标注变量
  • 标注参数
  • 标注返回值
// 标注变量,指定变量 msg 的类型为string
let msg:string = 'hello ts!'

// 标注参数和返回值,指定m2函数的参数类型为string,并且返回值也为string
const m2 = (name:string):string => {
  return name.toLowerCase() + msg
}

字符串类型、数字类型、布尔类型

// 定义字符串类型的变量
let username: string = 'baobo'

// 定义布尔类型的变量
let isTrue: boolean = false

// 定义数字类型的变量
let age: number = 20

console.log(username)
console.log(isTrue)
console.log(age)

字面量类型

用于限定数据的取值范围,类似于Java中的枚举

// 字面量类型,指定参数alignment的取值只能是left、right、center
function printText(s: string, alignment: "left" | "right" | "center") {
  console.log(s, alignment)
}

printText('hello', 'left')
printText('hello', 'aaa')	// 错误:取值只能是left | right | center

interface类型

// 定义一个接口,名字为Cat
interface Cat {
  name: string,
  age: number		// 若写为 age?: number 表示当前属性可选
}

// 定义变量为Cat类型
const c1: Cat = { name: '小白', age: 1}
// const c2: Cat = { name: '小黑', age: 1, sex: '公'}	// 错误:多出sex属性
// const c3: Cat = { name: '小红' }	// 错误:缺少age属性、

console.log(c1)

class类

使用class关键字类定义类,类中可以包含属性、构造方法、普通方法

// 定义一个类,名称为User
class User {
  name: string;	// 属性
  constructor(name: string) {	// 构造方法
    this.name = name
    }
  // 方法
  study() {
    console.log(this.name + '正在学习')
  }
}

const u = new User('张三')

console.log(u.name)
u.study()
interface Animal {
  name: string
  eat(): void
}

// 定义一个类Bird, 实现上面的Animal接口
class Bird implements Animal {
  name: string
  constructor(name: string) {
    this.name = name
  }
  eat(): void {
    console.log(this.name + ' eat')
  }
}

// 创建类型为Bird的对象
const b1 = new Bird('杜鹃')
console.log(b1.name)
b1.eat()
// 定义Parrot类,并且继承Bird类
class Parrot extends Bird {
  say(): void {
      console.log(this.name + ' say hello')
  }
}

const myParrot = new Parrot('Polly')
myParrot.say()
myParrot.eat()



总结

  • TypeScript 提供了静态类型检查,能在编译时捕捉错误,提升代码的可靠性和可维护性。
  • 基本类型接口 可以帮助定义清晰的结构和行为。
  • 及其继承和接口实现提供了面向对象的编程方式,使代码更具扩展性和复用性。

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

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

相关文章

《操作系统---PV操作》(同步与互斥)

一、练习题 面包师有很多面包,由n名销售人员推销。每名顾客进店后按序取一个号,并且等待叫号,当一名销售人员空闲时,就按序叫下一个号。可以用两个整型变量来记录当前的取号值和叫号值,试设计一个使销售人员和顾客同步…

PyTorch深度学习模型训练流程的python实现:回归

回归的流程与分类基本一致,只需要把评估指标改动一下就行。回归输出的是损失曲线、R^2曲线、训练集预测值与真实值折线图、测试集预测值散点图与真实值折线图。输出效果如下: 注意:预测值与真实值图像处理为按真实值排序,图中呈现…

聚合智链已获道富环球投资,正式上线AI合约策略资金托管平台

全球最大的托管银行之一道富环球首次进军加密货币领域,聚合智链获得其投资支持,打造出全球领先的AI合约策略资金托管平台,将在2024年8月 28 日正式上线。 道富环球集团的总部位于美国,其成立于1792年,是一家专注于托管…

easypoi模板导出word多页导出加强版

说明 上一篇文章提到多页导出,但是后边发现一个问题,如果用同一个模板导出多页内容,我们去获取多页内容的时候,会发现全部都一样,举个例子: XWPFDocument document WordExportUtil.exportWord07(outputU…

深度学习入门-第4章-神经网络的学习

学习就是从训练数据中自动获取最优权重参数的过程。引入损失函数这一指标,学习的目的是找出使损失函数达到最小的权重参数。使用函数斜率的梯度法来找这个最小值。 人工智能有两派,一派认为实现人工智能必须用逻辑和符号系统,自顶向下看问题…

java-Mybatis框架

简介 MyBatis 是一款优秀的持久层框架,它支持自定义 SQl、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Obje…

DFS 算法:全排列问题

我的个人主页 {\large \mathsf{{\color{Red} 我的个人主页} } } 我的个人主页 往 {\color{Red} {\Huge 往} } 往 期 {\color{Green} {\Huge 期} } 期 文 {\color{Blue} {\Huge 文} } 文 章 {\color{Orange} {\Huge 章}} 章 DFS 算法:记忆化搜索 此系列更新频繁&…

k8s中service对象

文章目录 一、Service简介Service和kube-proxy的作用与区别Service的工作过程kube-proxy的工作过程总结 二、具体实践ClusterIPClusterIP 基本概念应用场景 NodePortNodePort 简介应用场景 ExternalName简介应用场景 一、Service 简介 Kubernetes (k8s) 中的 Service 对象是一…

使用redis设计延迟队列

目录 延迟队列概念与重要性 定义:延迟队列的基本概念 重要性:延迟队列在处理异步任务中的关键作用 图表:延迟队列的工作流程图 ​编辑延迟队列设计案例 背景介绍 设计目标 系统架构 设计要点 现有物理拓扑 图表:有赞延迟…

GStreamer 简明教程(五):Pad 相关概念介绍,Pad Capabilities/Templates

系列文章目录 GStreamer 简明教程(一):环境搭建,运行 Basic Tutorial 1 Hello world! GStreamer 简明教程(二):基本概念介绍,Element 和 Pipeline GStreamer 简明教程(三…

自修C++Primer----3.2标准库类型string

目录 1.String的相关操作 1.1拷贝初始化&&直接初始化 1.2显示创建临时对象 1.3读取string对象内容 1.4一次读取多个未知对象 1.5使用getline读取一整行内容 1.6size()的返回值size_type类型 1.7两个string对象比较 1.8string对象赋值 1.9两个string对象相加 1…

策略产品 ①算法逻辑

目录 一、机器学习与AI的关系 二、机器学习全流程 1. 问题定义 2. 数据处理 3. 特征工程 4. 模型训练 5. 模型评估 6. 模型应用 机器学习是AI的关键技术之一,是指机器从历史数据中学习规律,从而提升系统某个性能度量的过程。这篇文章,我们在作…

C Primer Plus第十四章编程练习,仅供参考

第十四章编程练习 第一个问题让我们改写复习题5&#xff0c;创建一个函数去计算一年到某个月份的天数&#xff0c;在一个结构数组中去存储相关数据。完整程序代码以及运行结果如下&#xff1a; #include<stdio.h> #include<string.h> #include<ctype.h> st…

当外接硬盘接入到macOS上,只读不可写时,应当格式化

当windows磁盘格式例如 NTFS 的硬盘接入到macOS上时&#xff0c;会发现无法新建文件夹&#xff0c;无法删除、重命名。原因是磁盘格式对不上macOS&#xff0c;需要进行格式化。格式化时请注意备份重要数据。具体做法如下&#xff0c;在macOS中找到磁盘工具&#xff0c;然后对磁…

【HTML】常用几种模拟动画效果【附源代码】

1. 模拟音频波纹加载效果 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthde…

计算机视觉编程

目录 灰色度 缩略图 拷贝粘贴区域 调整图像尺寸 旋转图像45 画图线、描点 灰色度 灰度是指图像中每个像素的亮度值&#xff0c;用来描述图像中各个像素的明暗程度。在计算机视觉中&#xff0c;灰度可以通过以下方式来计算&#xff1a; 1. 平均值法&#xff1a;将图像中每…

如何在程序中创建出多条线程

多线程是编程中的一个重要概念&#xff0c;它允许程序同时执行多个任务&#xff0c;每个任务可以看作是一个线程。在Java中&#xff0c;多线程尤为常见且强大&#xff0c;它通过允许程序在并发环境下运行&#xff0c;提高了程序的执行效率和响应速度。以下是对Java多线程的详细…

数学建模~~~预测方法--决策树模型

目录 0.直击重点 1.决策树概念 2.节点特征的选择算法 3.基尼系数的计算 4.决策树的分类 5.模型的搭建 6.模型的改进和评价 ROC曲线 参数调优 &#xfeff;GridSearch网格搜索 使用搜索结果重新建模 0.直击重点 这个文章&#xff0c;我们从三个维度进行说明介绍&#…

如何使用Python快速修改文件的标签(如何将歌词嵌入到音乐文件中,含歌词嵌入接口源码)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 Python与Music 📒📝 1. 初探音乐文件的标签📝 使用Python修改标签📝 将歌词嵌入音乐文件⚓️ 相关链接 ⚓️📖 介绍 📖 你是否曾经听过一首好听的歌曲,却发现它的标签信息(元数据信息)杂乱无章?甚至找不到歌词?…

【Remi Pi开发板镜像烧录】使用sd卡进行瑞米派镜像的烧录

烧录大典 按照《软件开发指南》4.2.1和4.2.2的顺序进行&#xff0c;具体烧录哪个镜像结合你自己的需求&#xff0c;每个镜像的区别参考以下链接 https://mbb.eet-china.com/forum/topic/143906_1_1.html Tera term界面全屏如下设置看着比较舒服 设置完之后setup->save-&g…