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

几分钟学会TypeScript

目录

  • 一、类型推断和类型注解
  • 二.类型注解,声明时指定类型
  • 三、类型断言
  • 四、基础类型和联合类型
    • 字符串
    • 数字和浮点类型
    • 布尔
    • 空和undefined
    • 多类型
      • 值限定
  • 五、数组 元组 枚举
    • 数组
    • 元组,?代表可选参数
    • 枚举
      • 枚举使用
  • 六、函数
    • 函数作为参数
  • 七、类、接口与抽象类
    • 访问修饰符
    • 类的继承
    • 接口
    • 抽象类
    • 命名空间
  • 八、类型别名
  • 九、泛型
  • 十、运算符
  • 十一、条件控制
  • 十二、循环控制
  • 十三、正则表达式

一、类型推断和类型注解

//1. 类型约束
let str = '赵云'
//str  = 10 会报错,因为初始值约束为字符串

二.类型注解,声明时指定类型

let str2:string = '张飞'

三、类型断言

let nums = [1,2,3]
var result = nums.find(i => i>2)
//var ss  = result * 2 //这样会报错//可以添加类型断言as xx 关键字 断言是某种类型
var result2 = nums.find(i => i>2) as number
var ss  = result2 * 2

四、基础类型和联合类型

字符串

//省略类型
let author = '李白'
//指定类型
let author2:string = '李白'

数字和浮点类型

let n2:number = 10
let n3:number = 1.1

布尔

let b1:boolean = true

空和undefined

let nu:null = null
let und:undefined = undefined

多类型

let v4 :string|null = null

值限定

//let v5 : 1|2|3 = 5//会报错
let v6:1|2|3 = 2

五、数组 元组 枚举

数组

let nums3:number[] = [1,2,3]
//省略类型
let nums2 = [1,2,3]
//数组
let nums3:number[] = [1,2,3]
//在数组后面追加元素
nums3.push(4)
//在数组前面添加元素
nums3.unshift(1)
//删除最后面的元素
nums3.pop()
//从第几位开始删除几个
nums3.splice(0,1)
//删除最前面的
nums3.shift()
let nums4 = [1,2,3]
//合并两个数组
nums3.concat(nums4)
//根据下标查找元素位置
nums3.indexOf(2)
//排序
nums3.sort()
nums3.reverse()

元组,?代表可选参数

let ccc :[number,string,number,number?]= [1,'2',2]
//省略类型
let ccc2= [1,'2',2,6]

枚举

enum My{A,B,c
}

枚举使用

My.A 
//或者
My[0]

六、函数

//函数:a默认值是2,b是可选参数,c是剩余参数,返回值为string类型
function login(a:number = 2,b?:string,...c:string[]):string{
return "jack"
}//调用函数
login(1,"","1","2","3")

函数作为参数

function toExit(exit:Function){//执行exit("nickk")}//第一种调用
function handleExit(nickk:string){console.log('退出1')
}
toExit(handleExit)//第二种调用 匿名调用
toExit(function(nickk:string){console.log('退出2')
})//第三种调用
toExit((nickk:string)=>{console.log('退出3')
})

七、类、接口与抽象类

//类
class Person{
//静态属性
static DES:string = '张飞'nick:string = '默认'count:number = 2//构造方法constructor(nick:string,count:number){this.nick = nickthis.count = count}//方法say(nick:string){}//静态方法static play(nick:string){}
}
//使用类
let p = new Person('tom',5)
//p.nick = 'jack'
p.say('飞飞')
Person.play('飞飞')

访问修饰符

public protected private

类的继承

//继承extends
class Student extends Person {}
//使用
let stu = new Student('jack',6)
stu.count = 10

接口

//接口
interface People{name:string,age:number,}const Man:People = {name:"jack",age:18
}

抽象类

//抽象类
abstract class Persons{name:string = 'tom'play(){}//抽象方法abstract jump2():any}
class Teacher extends Persons{//继承抽象类,必须重写抽象方法jump2(){}}

命名空间

namespace aa{//在命名空间内添加export 可被外部调用export class Person{}
}
namespace bb{class Person{}
}
let ap = new aa.Person()
//let bp = new bb.Person() 报错找不到

八、类型别名

//非自定义模式
let nickName :string | number = "jack"
let nickName2 :string | number = 20
//自定义类型别名
type MyNickName = string | Numberlet nickName3:MyNickName = "TOM"
let nickName4:MyNickName = 33

九、泛型

function count(a:number, b:any):number[]{
return [a,b]
}//通过泛型改造后
function add<T>(a:T, b:T):T[]{
return [a,b]
}add<number>(1,2)
//add(1,2)  可省略类型
add<string>("jack","tom")
//add("jack","tom") 可省略类型

十、运算符

//+ - * / % ++ -- +=
//> < >= <= 
//== 判断值相等 
//=== 判断值和类型都相等
//!= 值不相等 
//!== 值和类型都不相等
//&& 并且
//|| 或者

十一、条件控制

// if else if else 
// switch case 
let age = 10
switch(age){case 1:breakcase 2:break;default:
}

十二、循环控制

let a = 2
while(a>1){}
//至少执行一次
do{}while(a>2)let names:string[] = ['张飞','赵云']
for(let i = 0;i<8;i++){var res = names[i]if(i>5){break}else {continue}
}
for(let n of names){//直接得到值var res = n
}
for(let index in names){//索引var resIndex = index
}

十三、正则表达式

相关文章:

几分钟学会TypeScript

目录 一、类型推断和类型注解二.类型注解&#xff0c;声明时指定类型三、类型断言四、基础类型和联合类型字符串数字和浮点类型布尔空和undefined多类型值限定 五、数组 元组 枚举数组元组,?代表可选参数枚举枚举使用 六、函数函数作为参数 七、类、接口与抽象类类访问修饰符类…...

最新版手机软件App下载排行网站源码/App应用商店源码

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 一款简洁蓝色的手机软件应用app下载排行&#xff0c;app下载平台&#xff0c;最新手机app发布网站响应式织梦模板。 主要有&#xff1a;主页、app列表页、app介绍详情页、新闻资讯列…...

R语言计算:t分布及t检验

t分布理论基础 t分布也称Student’s t-distribution&#xff0c;主要出现在小样本统计推断中&#xff0c;特别是当样本量较小且总体标准差未知时&#xff0c;用于估计正态分布的均值。其定义基于正态分布和 X 2 X^{2} X2分布&#xff08;卡方分布&#xff09;。如果随机变量X服…...

uni-app的地图定位与距离测算功能的实现

文章目录 一、引言二、uni-app地图定位实现三、距离测算技术四、完整代码五、结论本文着重探讨了如何在uni-app中实现地图定位,以及如何计算当前定位与目标位置之间的距离。 一、引言 在移动应用开发中,地图定位与距离测算是常见的功能需求。无论是出行导航、位置签到,还是…...

如何从应用商店Microsoft Store免费下载安装HEVC视频扩展插件

在电脑上打开一张HEIC类型的图片提示缺少HEVC解码器&#xff0c;无法打开查看&#xff0c;现象如下&#xff1a; 这种情况一般会提示我们需要下载安装HEVC解码器&#xff0c;点击“立即下载并安装”会跳转到应用商店&#xff0c;但是我们发现需要付费7元才能下载安装 免费安装…...

【vue】v-if 条件渲染

v-if 不适用于频繁切换显示模式的场景 修改web.user&#xff0c;可看到条件渲染的效果 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initi…...

Day37:LeedCode 738.单调递增的数字 968.监控二叉树 蓝桥杯 翻转

738. 单调递增的数字 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c;且数字呈 单调递增 。 示例 1: 输入: n 10 输出: 9 思路: 假设这个数是98,…...

详解Qt元对象系统

Qt库作为一款流行的跨平台C应用程序开发框架&#xff0c;其中的元对象系统是其核心特性之一。Qt元对象系统不仅提供了诸如信号槽&#xff08;Signals & Slots&#xff09;、属性系统&#xff08;Property System&#xff09;等功能&#xff0c;还实现了对C对象的运行时类型…...

无法用raven-js,如何直接使用TraceKit标准化错误字符串(一次有趣的探索)

引子&#xff1a;网上三年前&#xff08;2020&#xff09;的文章介绍了一个raven-js 简单说就是把堆栈信息格式化兼容各浏览器&#xff0c;便于查看错误来源。 **but&#xff1a;**到处找了一下raven-js&#xff0c;已经没有官方出处了&#xff0c;只在Sentry的源码仓库里发现…...

Docker学习笔记(二):在Linux中部署Docker(Centos7下安装docker、环境配置,以及镜像简单使用)

一、前言 记录时间 [2024-4-6] 前置文章&#xff1a;Docker学习笔记&#xff08;一&#xff09;&#xff1a;入门篇&#xff0c;Docker概述、基本组成等&#xff0c;对Docker有一个初步的认识 在上文中&#xff0c;笔者进行了Docker概述&#xff0c;介绍其历史、优势、作用&am…...

uniapp 检查更新

概览 在uniapp中检查并更新应用&#xff0c;可以使用uni-app自带的更新机制。以下是一个简单的示例代码&#xff0c;用于在应用启动时检查更新&#xff1a; // 在App.vue或者其他合适的地方调用 onLaunch: function() {// 当uni-app初始化完成时执行// 判断平台const platfor…...

(Java)数据结构——正则表达式

前言 本博客是博主用于复习数据结构以及算法的博客&#xff0c;如果疏忽出现错误&#xff0c;还望各位指正。 正则表达式概念 正则表达式&#xff0c;又称规则表达式&#xff08;Regular Expression&#xff09;&#xff0c;是一种文本模式&#xff0c;包括普通字符&#xf…...

第6章 6.3.1 正则表达式的语法(MATLAB入门课程)

讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 正则表达式可以由一般的字符、转义字符、元字符、限定符等元素组…...

RX8130CE为用户提供带复位延迟和主备电管理的解决方案

实时时钟作为设备的精确时钟来源&#xff0c;其作用如同人的心脏&#xff0c;为设备提供准确稳定的心跳.而便携式设备由于应用场景多变&#xff0c;所以对内部元器件要求也相对较高&#xff0c;这就对作为核心器件的实时时钟模块提出不少挑战。EPSON实时钟模块产品线拥有丰富的…...

JS文件导出变量

如果 config.js 文件中有多个变量要导出&#xff0c;你可以按照以下步骤进行&#xff1a; 1. 在 config.js 文件中定义多个变量&#xff0c;并使用 export 导出它们。 // config.js const baseUrl "http://localhost:8081"; const apiKey "your_api_key&quo…...

已知私钥和密文,如何用python进行RSA解密

要使用Python进行RSA解密,你可以使用pycryptodome库。下面是一个简单的示例,展示了如何使用已知的私钥和密文进行RSA解密: 首先,确保你已经安装了pycryptodome库。如果没有安装,你可以通过运行pip install pycryptodome来安装它。 然后,你可以使用以下代码进行RSA解密:…...

vue2-vue3面试

v-text/v-html/v-once/v-show/v-if/v-for/v-bind/v-on beforeCreate() 已有DOM节点&#xff1a;可以data选项&#xff1a;不可以虚拟DOM节点&#xff1a;不可以 created():掌握 已有DOM节点&#xff1a;可以data选项&#xff1a;可以虚拟DOM节点&#xff1a;不可以 beforeMount…...

jmeter生成随机数的详细步骤及使用方式

Apache JMeter 是一个用于测试性能的开源工具&#xff0c;它可以模拟多种类型的负载并测量应用程序的性能。在 JMeter 中生成随机数可以通过使用预定义的函数来实现。以下是生成随机数的详细步骤及使用方式&#xff1a; 安装 JMeter&#xff1a; 首先&#xff0c;你需要在你的计…...

速盾:为什么会出现高防cdn?它适合哪些行业?

随着互联网的不断发展和普及&#xff0c;网络安全问题也变得日益突出。由于互联网的特性&#xff0c;许多企业和组织的在线业务往往面临来自网络攻击的威胁&#xff0c;如DDoS攻击、恶意爬虫等。为了保护在线业务的正常运行和用户数据的安全&#xff0c;高防CDN应运而生。 高防…...

GB∕T 25058-2019 信息安全技术 网络安全等级保护实施指南

GB∕T 25058-2019 信息安全技术 网络安全等级保护实施指南...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...