背上小书包准备run之TypeScript篇
这TypeScript我真不知道面试会咋问。。。
哦以前还写过一篇基础⬇️
Typescript 基础易理解-------冲冲冲_ts和js有什么区别_慢谷的博客-CSDN博客
typescript是啥?与javascript的区别?
TypeScript是一个强类型的JavaScript超集,可编译为纯JavaScript。它是一种用于应用级JavaScript开发的语言。(c#、Java就是强类型语言)
区别:
1.TypeScript支持强类型,js不支持。
2.TypeScript 支持类和接口的概念,使面向对象编程更简单明确。类用于定义对象的结构和行为,接口则用于定义对象的合同(即对象应该具有的属性和方法)
3.高级特性:TypeScript 提供了一些 JavaScript 中缺少的高级特性,如元组(Tuple)、枚举(Enum)、泛型(Generics)等。这些特性有助于更好地描述数据结构和处理逻辑。
4.编译时类型检查:TypeScript 在编译阶段进行类型检查,捕获并报告类型错误。这减少了运行时错误,增加了代码质量和可维护性。
5.生态系统和工具支持:TypeScript 兼容 JavaScript 的生态系统,可以使用现有的 JavaScript 库和框架。此外,TypeScript 提供了强大的开发工具支持,如代码编辑器的智能感知、重构功能和错误检查。
尽管 TypeScript 是 JavaScript 的超集,但它仍然可以编译为普通的 JavaScript 代码,并且可以在任何支持 JavaScript 的运行环境中运行。TypeScript 主要用于开发大型项目,特别是需要更强类型约束和更好工具支持的场景。
我就背:ts是js的超集,在js的基础上提供了更多的类型和功能;ts 是一种带有静态类型检查的编程语言,它可以在开发过程中检测出类型错误。而 js是一种动态类型语言,它在运行时才进行类型检查;ts是编译性语言,需要编译成js才能在浏览器或其他 JavaScript 运行时环境中执行。而js是解释性语言,不需要编译可直接在浏览器或者其他JavaScript 运行时环境中执行。
typescript数据类型?
基本类型:
number: 表示数值,包括整数和浮点数。
string: 表示字符串。
boolean: 表示布尔值,即 true 或 false。
null 和 undefined: 分别表示 null 和 undefined。
symbol: 表示唯一的、不可变的值。
数组类型:
type[] 或 Array<type>: 表示由指定类型元素组成的数组。
元组类型:
[type1, type2, ...]: 表示固定长度和特定顺序的数组,每个位置上的元素可以具有不同的类型。
对象类型:
object: 表示非原始类型的值,例如对象、函数和数组等。
{} 或 Record<string, type>: 表示具有指定属性和对应类型的对象。
函数类型:
(arg1: type1, arg2: type2, ...) => returnType: 表示函数类型,包括参数的类型和返回值的类型。
类型推断:
如果没有显式指定变量的类型,TypeScript 可以根据赋予给变量的值来推断其类型。
高级类型:
union: 表示多个类型中的一个值。例如,type1 | type2 表示可以是 type1 或 type2。
intersection: 表示多个类型的交集。例如,type1 & type2 表示必须同时满足 type1 和 type2。
type: 用于创建自定义类型别名。
enum: 表示一组命名的常量值。
typescript中枚举类型?应用场景?
枚举类型(Enum)用于定义一组命名的常量值。枚举类型可以为每个常量分配一个名称,并使代码更具可读性和可维护性。
enum Color {
Red,
Green,
Blue,
}
let myColor: Color = Color.Green;
console.log(myColor); // 输出 1
在上面的示例中,我们定义了一个名为 Color 的枚举类型,它包含三个常量值:Red、Green 和 Blue。这些常量默认从 0 开始自动编号。
应用场景:
表示一组相关的常量值:例如表示不同颜色、星期几、状态等。
限制变量取值范围:通过指定枚举类型,可以确保变量只能取枚举中定义的值,防止无效值的引入。
增加代码可读性:使用枚举类型可以使代码更清晰地表达意思,提供更好的代码可读性和可维护性。
替代魔法数值:将代码中的魔法数值(magic numbers)替换为有意义的枚举常量,增加代码的可维护性。
枚举类型在处理一组固定的常量值时非常有用,它们提供了一种更好的方式来组织和使用常量。通过使用枚举类型,可以减少错误、提高代码可读性,并使代码更具表现力。
typescript中接口的理解?应用场景?
在 TypeScript 中,接口(Interface)用于描述对象的结构和行为,定义了对象应该具有哪些属性和方法。通过接口,可以明确指定对象的形状,并在开发过程中进行类型检查,确保对象符合接口的要求。以下是接口的示例:
interface Person {
name: string;
age: number;
sayHello(): void;
}
let person: Person = {
name: "Alice",
age: 30,
sayHello() {
console.log("Hello, I'm " + this.name);
},
};
person.sayHello(); // 输出 "Hello, I'm Alice"
在上面的示例中,我们定义了一个名为 Person 的接口,它要求对象具有 name 和 age 属性,并且必须有一个名为 sayHello 的方法,没有返回值。
应用场景:
定义对象的形状:接口可用于定义对象的属性和方法,确保对象的结构符合预期。
类型检查和提示:通过使用接口,在编码阶段就能捕获潜在的类型错误,并提供代码编辑器的智能感知和自动补全功能。
对象解构和函数参数:可以使用接口来约束对象解构和函数参数,以增加代码的可读性和可靠性。
定义类的实现规范:接口也可以作为类的合同,规定类必须实现指定的属性和方法,促使类的一致性和可扩展性。
接口在 TypeScript 中是一个重要的概念,它提供了一种强大的方式来描述对象的结构和行为,并且能够帮助开发者更好地理解和使用代码。通过使用接口,可以编写更健壮、可读性更高的代码,并在团队合作中提供清晰的约定和规范。
typescript中的interface和type有什么区别?
1.type不能继承,interface能继承;
interface 可以通过关键字 extends 进行继承其他 interface,从而扩展和组合类型。
interface Animal {
name: string;
}
interface Dog extends Animal {
bark(): void;
}
上述代码中,Dog 接口继承了 Animal 接口,从而拥有了 name 属性,并在其基础上增加了一个 bark 方法。
与此不同,type 不支持直接的继承,无法扩展其他类型。但是可以使用联合类型(|)和交叉类型(&)进行类型组合:
type Animal = {
name: string;
};
type Dog = Animal & {
bark(): void;
};
2.type可创建类型别名;
type 可以用来创建类型别名(Type Alias),给一个类型取一个新的名称。这样可以提高代码的可读性和可维护性。例如:
type Person = {
name: string;
age: number;
};Person 是一个类型别名,表示一个具有 name 和 age 属性的对象类型。
3.type可以声明任何类型,interface只能声明对象;
type 可以声明任何类型,包括原始类型、联合类型、交叉类型、函数类型等。例如:
type MyNumber = number | string;
type MyObject = {
id: number;
name: string;
};
type MyFunction = (x: number, y: number) => number;
相比之下,interface 主要用于声明对象类型。它只能描述对象的形状、属性和方法,不能直接声明其他类型。
4.同名type只能有一个,同名interface可以多个
如果存在多个同名的 interface,它们会自动合并成一个大的接口,从而扩展了原有的接口。例如:
interface Animal {
name: string;
}
interface Animal {
age: number;
}
const dog: Animal = {
name: 'Dog',
age: 5,
};
在这个例子中,两个 Animal 接口合并为一个,拥有 name 和 age 两个属性的接口。
相反,如果使用同名的 type 别名,后面的别名会覆盖前面的定义,无法进行合并。
总体来说,type 和 interface 在某些方面有不同的特性和用途。根据具体的需求和场景,选择合适的方式来声明和组织类型定义。
typescript中泛型的理解?应用场景?
在 TypeScript 中,泛型(Generics)是一种在编程语言中用于创建可重用代码的工具。通过泛型,可以在定义函数、类或接口时使用类型参数,使其可以适用于多种不同类型的数据。
以下是一个简单的泛型函数示例:
function identity<T>(arg: T): T {
return arg;
}
let result = identity<string>("Hello");
console.log(result); // 输出 "Hello"
在上面的示例中,我们定义了一个名为 identity 的泛型函数。使用 <T> 表示类型参数,并将其应用于函数参数和返回值的类型。这样,我们可以通过传入不同类型的参数来调用该函数,并且函数会返回相同类型的结果。
应用场景:
提高代码的复用性:通过使用泛型,可以编写更通用的函数、类或接口,以处理多种类型的数据,提高代码的复用性。
类型安全性:泛型能够提供类型检查和约束,避免意外的类型错误,并在编码阶段捕获潜在问题。
抽象数据结构:泛型在实现抽象数据结构(如栈、队列等)时非常有用,可以处理各种元素类型而无需重复编写代码。
函数式编程风格:泛型常用于函数式编程风格中,例如在数组的 map、filter 等函数中,可以使用泛型来处理不同类型的数据。
通过合理应用泛型,可以提高代码的灵活性、可读性和可维护性。它是 TypeScript 中强大且重要的特性之一,使得我们能够编写更加通用和类型安全的代码。
面试的时候我就背这句:泛型是指在定义函数、接口,类的时候没有提前指定具体的类型,而是在使用的时候再指定类型的一种特性。
如何在react项目中应用typescript?
要在 React 项目中应用 TypeScript,可以按照以下步骤进行设置:
1.创建 TypeScript React 项目:使用脚手架工具(如 Create React App)创建一个新的 TypeScript 项目。
npx create-react-app my-app --template typescript
2.将现有 React 项目转换为 TypeScript:如果已经有一个现有的 React 项目,并希望将其转换为 TypeScript,可以执行以下操作:
在项目根目录运行以下命令安装 TypeScript 和相关的类型定义文件:
npm install typescript @types/react @types/react-dom
3.配置 TypeScript 编译选项:可以创建 tsconfig.json 文件来配置 TypeScript 编译选项。可以使用默认配置,也可以根据项目需求进行自定义配置。
4.安装和使用 TypeScript 类型定义库:如果使用了第三方库或组件,可以通过安装相应的类型定义文件(通常以 @types/ 开头)来提供类型支持。
开始编写 TypeScript 代码:在 React 组件中使用 TypeScript 的优势之一是能够为组件的 props、state 和事件处理函数等添加明确的类型注解,以提供更好的类型检查和智能感知。
5.运行项目:使用适合的命令(如 npm start)来启动 TypeScript React 项目,并在开发过程中享受 TypeScript 的类型检查和错误提示。
通过将 TypeScript 引入到 React 项目中,能够增加代码的可靠性、可读性和可维护性。TypeScript 为 React 开发提供了更强大的类型系统和工具支持,以帮助开发者编写更健壮和可扩展的应用程序。
相关文章:
背上小书包准备run之TypeScript篇
这TypeScript我真不知道面试会咋问。。。 哦以前还写过一篇基础⬇️ Typescript 基础易理解-------冲冲冲_ts和js有什么区别_慢谷的博客-CSDN博客 typescript是啥?与javascript的区别? TypeScript是一个强类型的JavaScript超集,可编译为纯…...
什么是绩效管理?绩效管理包括哪些内容?
阅读本文您可以了解:1、绩效管理的定义;2、绩效管理的内容; 一、什么是绩效管理 绩效管理是一种组织和管理方法,旨在确保员工的工作与组织的目标保持一致,以及激励和提高员工的工作表现。它涉及设定明确的目标和标准&…...
Java基础练习八(二维数组)
1.装水问题 有一个 异形 容器,用一个 n * n 的二维数组来表示。其中 1 表示容器实心部分, 0 表示空心部分。现使用此容器装水,能装多少水(每个元素都表示一份水,只有有挡板的部分能装水)? publi…...
Biopython序列比对
从InterPro网站(https://www.ebi.ac.uk/interpro/download/Pfam/)下载多序列比对文件Pfam-A.seed.gz(含多个多序列比对) wget https://ftp.ebi.ac.uk/pub/databases/Pfam/current_release/Pfam-A.seed.gz解压,取第一…...
无法坚持运动?解密肠道菌群影响运动积极性
谷禾健康 运动可以说是最有效和可行的生活方式因素,个人可以利用它来保护自己免受各种疾病的侵害,包括代谢性、心血管、神经退行性和肿瘤性疾病。 世界卫生组织建议,每周进行150-300分钟的中等强度运动。 运动的好处具体不用多说了࿰…...
4-5-tablewidget
文章目录 添加控件,添加行列数widget.cppwidget.h效果 添加控件,添加行列数 widget.cpp #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this)…...
前端基础第一天-html-综合案例
通过综合案例,主要复习: 目录文件夹今日所学标签路径锚点链接 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initia…...
PDF Expert 3.3 for mac
PDF Expert是一款专业的PDF编辑和阅读工具。它可以帮助用户在Mac、iPad和iPhone等设备上查看、注释、编辑、填写和签署PDF文档。 以下是PDF Expert的特点: PDF编辑:PDF Expert提供了丰富的PDF编辑功能,包括添加、删除、移动、旋转、缩放、裁…...
【腾讯云 Cloud Studio 实战训练营】深度体验 | 使用腾讯云 Cloud Studio 快速构建 Vue + Vite 完成律师 H5 页面
【腾讯云 Cloud Studio 实战训练营】深度体验 | 使用腾讯云 Cloud Studio 快速构建 Vue Vite 完成律师 H5 页面 写在前面的话一、腾讯云 Cloud Studio 介绍1.1 Cloud Studio 应用场景1.2 Cloud Studio 开发优势 二、沉浸式体验开发快速构建 H5 页面2.1 注册与登录 Cloud Studi…...
Word转PDF在线转换如何操作?分享转换技巧
现如今,pdf转换器已成为大家日常办公学习必不可少的工具,市场上的pdf转换器主要有两种类型,一种是需要下载安装的,另一种是网页版,打开就可以使用的,今天小编给大家推荐一个非常好用的网页版pdf转换器&…...
只需5步 真·双开电脑版微信
最近发现,有些小伙伴不仅有双开手机版微信的需求,同时也有电脑版的需求。 今天教大家一个方法,简单好用,只需要跟着图片操作,5步即可!快一起来试试吧~ 1.下载安装ProcessExplorer 2.右键以管理员身份运行…...
如何将JSON字符串转化成对象
在这里只能使用ObjiectMapper这个类才能将Json字符串转成对象的格式进行输出 话不多说,直接上代码 实体类 //实体类 Setter Getter public class UserInfo implements Serializable {private Long id;private String name; //昵称private String phone; //手机转换代码 St…...
Zebec Protocol 将进军尼泊尔市场,通过 Zebec Card 推动该地区金融平等
流支付正在成为一种全新的支付形态,Zebec Protocol作为流支付的主要推崇者,正在积极的推动该支付方案向更广泛的应用场景拓展。目前,Zebec Protocol成功的将流支付应用在薪酬支付领域,并通过收购WageLink将其纳入旗下,…...
stm32项目(8)——基于stm32的智能家居设计
目录 一.功能设计 二.演示视频 三.硬件选择 1.单片机 2.红外遥控 3.红外探测模块 4.光敏电阻模块 5.温湿度检测模块 6.风扇模块 7.舵机 8.WIFI模块 9.LED和蜂鸣器 10.火焰传感器 11.气体传感器 四.程序设计 1.连线方式 2.注意事项 3.主程序代码 五.课题意义…...
边缘计算:连接智能世界的变革之力
随着物联网和人工智能的迅猛发展,边缘计算作为一种新兴的计算模式正受到越来越多的关注。边缘计算将数据处理和分析的能力从云端向网络的边缘推移,为各行各业带来了巨大的机遇和挑战。本文将探讨边缘计算的定义、应用领域以及对未来智能世界的影响。 1.…...
多货币多汇率跨境电子商城建设(仓储管理、网络安全)
多货币多汇率跨境电子商城建设需要考虑到多个方面,包括仓储管理、网络安全、货币兑换、物流配送等。以下是具体的介绍: 一、仓储管理 仓储管理是跨境电子商城的重要组成部分,需要考虑到商品的存储、管理和分拣等环节。以下是需要注意的几个…...
笔记,ubuntu22安装header问题
描述: 需要/lib/modules/5.15.0-53-generic 安装linux-headers-5.15.0-53-generic_5.15.0-53.59_20.04.1_amd64.deb提示 Package libssl1.1 is not installed.,机器上只有libssl3.0,最后强制安装,并且打了快照,防止重…...
领航优配:股票分红为什么股价下降?分红有什么好处?
股票分红是一种报答股东的方法,也是一种表现公司价值的方法。那么股票分红为什么股价下降?分红有什么优点?领航优配也为大家准备了相关内容,以供参考。 股票分红为什么股价下降? 股票进行分红后股价出现跌落是一种很常…...
Spark(38):Streaming DataFrame 和 Streaming DataSet 转换
目录 0. 相关文章链接 1. 基本操作 1.1. 弱类型 api 1.2. 强类型 1.3. 直接执行 sql 2. 基于 event-time 的窗口操作 2.1. event-time 窗口理解 2.2. event-time 窗口生成规则 3. 基于 Watermark 处理延迟数据 3.1. 什么是 Watermark 机制 3.2. update 模式下使用 w…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...
抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...
vue3 daterange正则踩坑
<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...
小木的算法日记-多叉树的递归/层序遍历
🌲 从二叉树到森林:一文彻底搞懂多叉树遍历的艺术 🚀 引言 你好,未来的算法大神! 在数据结构的世界里,“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的,它…...
sshd代码修改banner
sshd服务连接之后会收到字符串: SSH-2.0-OpenSSH_9.5 容易被hacker识别此服务为sshd服务。 是否可以通过修改此banner达到让人无法识别此服务的目的呢? 不能。因为这是写的SSH的协议中的。 也就是协议规定了banner必须这么写。 SSH- 开头,…...
