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

TypeScript知识点总结

typescript是js的超集,目前很多前端框架都开始使用它来作为项目的维护管理的工具,还在不断地更新,添加新功能中,我们学习它,才能更好的在的项目中运用它,发挥它的最大功效

let b: null = nulllet c: null = undefinedlet d: undefined = undefined
let e: undefined = nulllet numbers: number[] = [1, 2, 3, 4]
let numbers1: Array<number> = [1, 2, 3, 4]
let strings: string[] = ['1', '2', '3', '4']
let strings1: Array<string> = ['1', '2', '3', '4']type num = number[]let numbers3: num = [1, 2, 3, 4]

/类型别名/

type strAndNum = (number | string)[]let data: strAndNum = [1, 2, 3, 4, '11111']type dataType = number | string[]let data1: dataType = 22222
let data2: dataType = ['1', '2']function add(num1:number, num2:number):number {return num1+num2
}function add1(num1:number, num2:number):void {// return num1+num2
}add(1, 2);// add1('1', '2');type funcType = (n1:number,n2:number) => number
const add2:funcType  = (num1, num2) => {return num1+num2
}function mySlice(start: number, end?: number):void {console.log(`起始索引${start};结束索引${end}`)
}mySlice(1,3)
mySlice(1)
// mySlice()type pType = { name: string; age: number; sayHi(): void;greet(name:string):void}let person:pType  = {name: 'gaofeng',age: 19,sayHi() { },greet(name) { }
}
type configType = {url: stringmethod:string
}
function myAxios(config:configType):void {}myAxios({url: "xxxxxxxxxxxxx",method:"Get"
})

//接口

interface IPerson {name: stringage: numbersayHi: () => void
} 
let person1:IPerson = {name: 'gf',age: 100,sayHi(){}
}let person2: IPerson= {name: 'gf2',age: 120,sayHi(){}
}person1.name = 'xxxxx'

//类型别名和接口的区别
//1.接口只能为对象声明类型,类型别名可以为任何类型声明
//2.接口可以继承,类型别名不能继承
//3.接口和类型别名的声明方式不一样

//接口的继承

interface Ponit2D {x: numbery: number
}interface Pointer3D extends Ponit2D{z:number
}let p3: Pointer3D = {x: 10,y:20,z:100
}

//元组,指定长度的数组类型

let postion: number[] = [29, 42]let pos1: [number, number] = [20, 19]type numbers = [number, number]
let pos2: numbers = [20, 19]

//类型推论

// let app: number
// app = 123
// app = '22222'let app = 15
// app = 'test....'function add21(num: number, num2:number) {return num+num2
}const div = document.getElementById('link') as HTMLAnchorElement
const div2 = <HTMLAnchorElement>document.getElementById('link')
div.href = 'xxxxxxxxxxxxx'
div2.href = 'XXXXXXXXXXXXXXXXXXXXXXXX'

//字面量类型

let str = 'hello ts'const str2 = 'HELLO TS'// let str3 :19 = 19type dType = 'up' | 'down' | 'left' | 'right'
function changeDirection(d: dType) {console.log(d)
}changeDirection('down')

//枚举类型
//类似于字面量+联合类型
//注意:若果形参的类型为Direction,那么实参就应该是枚举类型成员中的任意一个

enum Direction { Up, Down = 4, Left, Right }const obj = {a1:Direction.Down
}function changeDirection1(d: Direction) {console.log('xxxxxxxxxxx')
}
changeDirection1(Direction.Up) // 0
changeDirection1(Direction.Down) // 4
changeDirection1(Direction.Left) // 5
changeDirection1(Direction.Right) // 6

//字符串枚举

enum Direction1 { Up='Up', Down = 'Down', Left='Left', Right='Right' }console.log(Direction1.Down)
console.log(Direction1.Up)

//typeof
//类型查询
//根据已有变量的值,获取该值的类型,来简化类型书写
//只能用来查询变量或属性的类型
//无法查询其他形式的类型,比如函数调用

let p = { x: 1, y: 1 }function add11(obj: typeof p) {console.log(obj.x+obj.y)
}add11({ x: 100, y: 200 })let num: typeof p.x

//TS中的class,不仅仅提供了class的语法功能,而且也是一种类型存在

class Person {age: numbergender = '男'name:string
}const p = new Person()p.age

//class的构造函数
//构造函数的作用是设置实例的初始属性
//构造函数不能有返回类型,不要手动指定返回值

class People {age: numbergender: stringconstructor(age:number, gender:string) {this.age = agethis.gender = gender}
}const p1 = new People(20, 'gaofeng')
p1.age
p1.gender

//class的实例方法

class Point {x = 10y = 10scale(n: number) {this.x *= nthis.y *= n}
}const o = new Point()o.scale(2)
o.x
o.y

//class中的继承 extends继承父类,implements实现接口
//js中只有extends,ts提供了implements

class Animal {move() {console.log('Moving along')}
}class Dog extends Animal {name = '二哈'bark() {console.log('wangwang')}}const d = new Dog()
d.move()
d.bark()
d.name

//implements ts特有的实现方式
//类来实现接口,类继承类
//实现一个接口,就是要类实现接口中所有的属性和方法

interface Singlable {sing(): voidgetName(): stringgetAge(num:number):number
}class Man implements Singlable {name = 'xiaoming'sing() {console.log('hahaha~~~~')}getName() {return this.name}getAge(num:number) {return  num}
}const m = new Man()m.getAge(20)

//class中类成员的可见性
//publicpublic 公有的,可以被任何地方访问,可以直接省略不写
//protected 受保护的,仅在其声明的类和子类(非实例对象)中可见
//private私有的,只在当前类中可见,再实例对象子类中都不可见

class Animal {public move() {console.log('hahaha')}protected getName() {}private __run__() {console.log('99999')//类中的辅助方法}
}
const a = new Animal()
a.move
//a.protected 是无法在实例上获取的
//a.__run__ 是无法在实例上获取的class Dog extends Animal {bark() {console.log('wangwang')this.getName()//this.__run__() 是无法在实例上获取的}}const d = new Dog()d.move
//d.protected 是无法在实例上获取的
//a.__run__ 是无法在实例上获取的

相关文章:

TypeScript知识点总结

typescript是js的超集&#xff0c;目前很多前端框架都开始使用它来作为项目的维护管理的工具&#xff0c;还在不断地更新&#xff0c;添加新功能中&#xff0c;我们学习它&#xff0c;才能更好的在的项目中运用它&#xff0c;发挥它的最大功效 let b: null nulllet c: null …...

Map简单介绍

Map 是 Java 中用于存储键值对的接口&#xff0c;它是一个抽象类&#xff0c;有多个实现类&#xff0c;如 HashMap、TreeMap、LinkedHashMap 等。我将为你提供一些关于 Map 接口的源码解读。 首先&#xff0c;Map 接口的定义如下&#xff1a; public interface Map<K, V&g…...

Linux文本处理工具和正则表达式

Linux文本处理工具和正则表达式 一.查看、截取和修改文本的工具 1.查看文本的工具 cat 最常用的文件查看命令&#xff1b;当不指明文件或者文件名为一杠’-时&#xff0c;读取标准输入。 cat [OPTION]... [FILE]... -A&#xff1a;显示所有控制符(tab键:^I;行结束符:$) -…...

【WebRTC---源码篇】(二十三)JitterBuffer

PacketBuffer packetbuffer类中重要的一些变量 // buffer_.size() and max_size_ must always be a power of two.const size_t max_size_;//能存储的最大元素个数// The fist sequence number currently in the buffer.uint16_t first_seq_num_ RTC_GUARDED_BY(crit_);//这个…...

基于SpringBoot+Vue的在线考试系统设计与实现(源码+LW+部署文档等)

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…...

用Rust实现23种设计模式之 外观模式

关注我&#xff0c;学习Rust不迷路&#xff01;&#xff01; 外观模式是一种结构型设计模式&#xff0c;它提供了一个统一的接口&#xff0c;用于访问子系统中的一组接口。以下是外观模式的优点和使用场景&#xff1a; 优点&#xff1a; 简化客户端代码&#xff1a;外观模式…...

使用一个python脚本抓取大量网站【1/3】

一、说明 您是否曾经想过抓取网站&#xff0c;但又不想为像Octoparse这样的抓取工具付费&#xff1f;或者&#xff0c;也许您只需要从网站上抓取几页&#xff0c;并且不想经历设置抓取脚本的麻烦。在这篇博文中&#xff0c;我将向您展示我如何创建一个工具&#xff0c;该工具能…...

Session与Cookie的区别(五)

储存状态的方式 小明的故事说完了&#xff0c;该来把上面这一段变成网络的实际案例了。其实在网络世界中问题也是一样的。 前面已经提到过我们会把状态存在 Cookie 里面&#xff0c;让 Request 之间能够变得有关联。 假设我们今天要来做一个会员系统&#xff0c;那我要怎么知道…...

【Linux】网络编程套接字

目录 1 预备知识 1.1 IP地址 1.2 端口号 1.3 TCP协议和UDP协议 1.4 网络字节序 2 socket 编程接口 2.0 socket 常见 API 2.1 socket 系统调用 2.2 bind 系统调用 2.3 recvfrom 系统调用 2.4 sendto 系统调用 2.5 listen 系统调用 2.6 accept 系统调用 2.7 con…...

【C++】语法小课堂 --- auto关键字 typeid查看实际类型 范围for循环 空指针nullptr

文章目录 &#x1f35f;一、auto关键字&#xff08;C11&#xff09;&#x1f369;1、auto的简介&#x1f369;2、auto的使用细则&#x1f6a9;auto与指针和引用结合起来使用&#x1f6a9; 在同一行定义多个变量 &#x1f369;3、auto不能推导的场景1️⃣auto不能作为函数的参数…...

Vercel 部署的项目发现APIkeys过期了怎么办

好不容易部署的Vercel&#xff0c;发现APIkeys过期了显示&#xff0c;查了查资料发现只要更新下新的apikeys&#xff0c;然后再重新部署下就好了。 重新设置APIkeys 1.1. 进去 Vercel 项目内部控制台&#xff0c;点击顶部的 Settings 按钮&#xff1b; 1.2 点击环境变量Enviorn…...

【HMS Core】推送报错907135701、分析数据查看

【关键字】 HMS、推送服务、分析服务 【问题描述1】 集成推送服务&#xff0c;获取Token时报错 907135701: scope list empty 【解决方案】 907135701OpenGW没有配置Scope 1、您可以检查下网络是否有问题&#xff0c;手机是否可以正常连接互联网 2、查看推送服务开关是否正…...

Air32 | 合宙Air001单片机内部FLASH读写示例

Air32 | 合宙Air001单片机内部FLASH读写示例 代码已经通过测试&#xff0c;开发环境KEIL-MDK 5.36。 测试代码 void FLASH_RdWrTest(void) {uint32_t Address;uint32_t PageReadBuffer[FLASH_PAGE_SIZE >> 2];uint32_t PageWriteBuffer[FLASH_PAGE_SIZE >> 2];mem…...

C语言基本语法-第一章

C 语言基本语法 语句 C 语言的代码由一行行语句&#xff08;statement&#xff09;组成。语句就是程序执行的一个操作命令。C 语言规定&#xff0c;语句必须使用分号结尾&#xff0c;除非有明确规定可以不写分号。 int x 1;上面就是一个变量声明语句&#xff0c;声明整数变…...

八、Spring 整合 MyBatis

文章目录 一、Spring 整合 MyBatis 的关键点二、Spring 整合 MyBatis 的步骤2.1 创建 Maven 项目&#xff0c;并导入相关依赖2.2 配置 Mybatis 部分2.3 配置 Spring 部分2.3 配置测试类 一、Spring 整合 MyBatis 的关键点 1、 将 Mybatis 的 DataSource (数据来源)的创建和管理…...

Flutter Flar动画实战

在Flare动面出现之前,Flare动画大体可以分为使用AnimationController控制的基础动画以及使用Hero的转场动画,如果遇到一些复杂的场景,使用这些动画方案实现起来还是有难度的。不过,随着Flutter开始支持Flare矢量动面,Flutter的动画开发也变得越来越简单。事实上,Flare动画…...

A stop job is running for xxxxxx

有时候服务器关机时&#xff0c;会有个进程卡在那里&#xff0c;使系统无法关闭 提示&#xff1a; A stop job is running for xxxxxx方法&#xff1a; 设置一个启动/停止的默认超时时间即可 vim /etc/systemd/system.conf DefaultTimeoutStartSec300s DefaultTimeoutStopSe…...

C++入门之stl六大组件--List源码深度剖析及模拟实现

文章目录 前言 一、List源码阅读 二、List常用接口模拟实现 1.定义一个list节点 2.实现一个迭代器 2.2const迭代器 3.定义一个链表&#xff0c;以及实现链表的常用接口 三、List和Vector 总结 前言 本文中出现的模拟实现经过本地vs测试无误&#xff0c;文件已上传gite…...

windows下以指定用户访问SMB服务器进行读写

一 概述 最近遇到一个问题&#xff0c;linux 的 smb服务器开启匿名访问&#xff0c;windows访问linux文件夹不需要用户名密码就可以进去使用&#xff0c;但是存在一个问题&#xff0c;ssh连接到linux 后修改的文件&#xff0c;在windows已smb方式下打开某个文件修改 是没有权限…...

数组根据属性去重

利用reduce函数处理&#xff0c;直接上代码&#xff01; let data [{name:晓明,id:1},{name:德华,id:2},{name:德华,id:2},{name:晓明,id:1},] var obj {}; let arr data.reduce(function (item, next) {obj[next.id] ? : obj[next.id] true && item.push(next)…...

高考数学97分,我的“数学直觉“比140分更好用:链表指针操作的代数思维:从离散数学看单链表

目录 一&#xff0c;序言 二&#xff0c;数学思维 三&#xff0c;核心概念 1. 节点&#xff08;Node&#xff09; 2. 头指针&#xff08;Head Pointer&#xff09; 3. 链式存储 4. 链表类型 5. 核心操作 6. 内存管理 7. 与顺序表的对比 数学思维&#xff1a; 8. 应用场景 四…...

【数据集】SOCAT-表层海洋二氧化碳逸散度(fCO₂)观测数据

目录 数据概述 数据下载 参考 数据概述 1. 数据背景与意义 宏观背景(SOCAT):SOCAT(Surface Ocean CO₂ Atlas)是国际海洋碳研究界的一项核心数据综合项目,汇集了全球经过严格质量控制的表层海洋二氧化碳逸散度(fCO₂)观测数据。该项目受到全球海洋观测系统(GOOS)的认…...

Logisim-Evolution:用可视化设计破解数字电路学习难题的开源工具

Logisim-Evolution&#xff1a;用可视化设计破解数字电路学习难题的开源工具 【免费下载链接】logisim-evolution Digital logic design tool and simulator 项目地址: https://gitcode.com/gh_mirrors/lo/logisim-evolution 重新定义数字电路设计&#xff1a;从抽象概念…...

Intv_AI_MK11 Java开发环境快速搭建:从JDK安装到模型调用

Intv_AI_MK11 Java开发环境快速搭建&#xff1a;从JDK安装到模型调用 1. 前言&#xff1a;为什么选择Java调用AI模型 Java作为企业级开发的主流语言&#xff0c;在AI应用开发中同样能发挥重要作用。Intv_AI_MK11作为新一代AI模型&#xff0c;提供了完善的Java SDK支持&#x…...

mootdx完全指南:金融数据获取与分析的7个实战技巧

mootdx完全指南&#xff1a;金融数据获取与分析的7个实战技巧 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx 副标题&#xff1a;量化交易 | 数据接口 | Python工具 你是否曾在量化交易策略开发中…...

Spring Data JPA中常用的注解详解

文章目录Spring Data JPA 常用注解详解&#xff08;实体映射篇&#xff09;一、前言二、基础注解&#xff08;必掌握&#xff09;1. Entity2. Table3. Id4. GeneratedValue5. Column6. Basic7. Transient三、时间/枚举类型映射8. Temporal9. Enumerated四、嵌入式对象&#xff…...

数字人项目救星:lite-avatar形象库150+免费形象开箱即用

数字人项目救星&#xff1a;lite-avatar形象库150免费形象开箱即用 还在为数字人项目找不到合适、好看又免费的形象发愁吗&#xff1f;自己训练模型&#xff0c;耗时耗力&#xff0c;效果还不一定好&#xff1b;购买商业形象库&#xff0c;成本高昂&#xff0c;预算有限根本玩…...

别只盯着server.log了!Kafka Controller日志与GC日志里的“宝藏”与“陷阱”

别只盯着server.log了&#xff01;Kafka Controller日志与GC日志里的“宝藏”与“陷阱” 当Kafka集群出现Leader选举异常、副本同步缓慢或频繁Full GC时&#xff0c;大多数工程师的第一反应是打开server.log翻找线索。但真正的高手会告诉你&#xff1a;controller.log和GC日志才…...

网站 SEO 优化检查需要检查哪些方面

网站 SEO 优化检查需要检查哪些方面 在当今互联网时代&#xff0c;一个网站的成功与否在很大程度上取决于其在搜索引擎上的表现。搜索引擎优化&#xff08;SEO&#xff09;是提升网站在搜索结果中排名的重要手段。但是&#xff0c;SEO 并不是一劳永逸的事情&#xff0c;需要持…...

Tubular部署与配置教程:从源码编译到F-Droid发布的完整流程

Tubular部署与配置教程&#xff1a;从源码编译到F-Droid发布的完整流程 【免费下载链接】Tubular A fork of NewPipe that implements SponsorBlock and ReturnYouTubeDislike. 项目地址: https://gitcode.com/gh_mirrors/tu/Tubular Tubular是一款基于NewPipe开发的增强…...