TypeScript理论知识

news/2024/4/20 12:08:28/文章来源:https://blog.csdn.net/tangyu520lehua/article/details/129119615

TypeScript理论知识

什么是TypeScript?

  • js是一个运行时编译语言–编写一段代码以后,不会预编译,在执行这个代码的时候才会编译,那么如果代码有错误。只有执行的时候才知道
  • js还是一个弱类型语言—没有数据类型
  • 要解决以上问题,所以开发了JavaScript的超集—TypeScript
  • 它是强类型语言、可以被编译成js代码
  • 市面上可以执行ts的环境只有denojs

如何使用TypeScript?

  • 1、安装TypeScript运行环境—cnpm i -g typescript
  • 2、编写代码的时候,需要把文件命名为 .ts后缀
  • 3、运行代码的时候,必须先编译,否则nodejs无法运行

TypeScript的数据类型?

  • 显示数据类型:
let count: number = 1
let text: string = 'my text'
//text = 2  error
let bool: boolean = false
//bool = 0  error 这里一定要注意,这里0不是false,他不会做隐式转换
  • 推导类型:
let myCount = 10  //相当于 let myCount: number = 10
//myCount = false  error  myCount推导类型为number
  • any:当数据类型不固定,可以使用any
    • 定义any数据有两种方法—一个是显式、推导
    • any不判断数据类型
let myVal: any = 1  
//let myVal 或者这样写,表示myVal为一个any
myVal = 'my value'
  • unknow会对数据进行判断
let myVal: unknow = 10
myVal = 'my value'
//console.log(myVal.masg)  取不了属性,只能是一个简单的值
  • any与unknown的区别?

any不判断数据类型
unknown会对数据进行判断

  • 定义数组
    • string[] 表示这个数据的类型为数组,数组每一项为字符串
let arrStr = ['str01','str02']  //相当于显式定义  let arrStr: string[]
//arrStr[1] = 2 (error 没有办法给一个字符串赋值为number)
arrStr[2] = 'str03'//可以用泛型来定义数组类型  Array<number> 表示arrNum为一个数组,他的没一项都为number类型
//let arrNum: Array<number> = [12, 34, '45'] (error '45'是string类型)
  • 定义函数
    • 把方法的入参和返回值进行类型固定
//: number表示方法一定会返回一个数字类型的数据
//add(x: number, y: number) 表示add方法要接收两个参数,都是number类型
function add(x: number, y: number): number {//return 10//return '10' (error)return x + y
}
//let result = add(10, '20') (error  调用方法的时候,传递的数据类型必须和定义的数据类型一致)
let result = add(10, 20)
  • 定义返回空
    • 表示无返回值,方法也不能有返回
//void 表示无返回
function doFunc(): void{//return 10  (error  不能执行返回)
}
  • 函数接收的参数有默认值
//数据传递的个数不确定的时候,会经常使用:  ...args
function func(type = 'atype', ...args): any {//return 'test'console.log(type, args)
}
func()
func('atype', 1,2,3,4)

总结

数组:

  • 使用 string[] 表示是一个数组,每一个项都为string数据类型
  • 使用Array

函数声明:

  • function test(): void {} 表示无返回值,方法也不能有返回
  • function test(): string/number/boolean等 {} 指定返回的数据的类型
  • function test() {} === function test(): any {} 表示可以返回任意的数据类型

参数默认值:

  • function test(type = ‘value’) {} 表示type数据可以不传,不传的默认值为’value’

剩余参数:

  • 当一个函数,接收的数据个数不固定时,那么可以如下定义
    function test(…args) {}
    test(1, 2, 3) 那么args就是 [1, 2, 3]

接口

  • 什么是接口
    • 定义数据或者对象的属性或者方法的规则
//定义一个用户数据
interface User {id: string,name: string,age: number,say: () => viod;//?:  表示这个参数属于可选参数,可传可不传//(msg: strimg) => boolean  handle是一个数据类型为函数的属性,这个函数要求入参一个字符串,并且会返回一个Boolean值handle?: (msg: strimg) => boolean
}
//interface 可以进行接口继承,type不可以
interface  SyUser extends User {sex: '男'| '女'
}function getUser():User{id: 'lisa',name:'丽莎',age: 24,say() {consolte.log('-----个人信息')}handle(msg: string): boolean {   //因为handle为可选数据,所以handle可传可不传return msg === '写代码'}
}let user: User = getUser()
user.say()//调用可选属性的时候,需要判断属性是否存在
//let bool: boolean = user.handle('12') ---error 没有对handle进行判断,handle属性可能为空
if(user.handle) {let bool: boolean = user.handle('12')
}

模块化

  • module
  • namespace
  • module和namespace的区别和共同点?
    • 都需要导出的数据或者方法外部才可以使用,模块可以导出任意的东西(包含命名空间)

泛型

  • 当处理和返回的数据类型无法确定的时候,需要使用泛型
//T表示数据类型不固定,在调用的地方指定数据类型
function sort<T>(arr: T[] {return arr
})
sort<string>(['1', '2', 'a'])
sort<number>([1,2,3])

总结

  • ts是允许前端使用强类型来开发项目
    • 好处:控制数据类型、执行的时候会预编译,把我们的错误发现在编写阶段

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ccc-pytorch-基础操作(2)

文章目录1.类型判断isinstance2.Dimension实例3.Tensor常用操作4.索引和切片5.Tensor维度变换6.Broadcast自动扩展7.合并与分割8.基本运算9.统计属性10.高阶OP大伙都这么聪明&#xff0c;注释就只写最关键的咯1.类型判断isinstance 常见类型如下&#xff1a; a torch.randn(…

虹科新闻 | 虹科与b-plus正式建立合作伙伴关系,共同致力于用于ADAS/AD系统开发的VV测量解决方案

虹科b-plus 携手共创未来&#xff01; 近期&#xff0c;虹科与德国b-plus正式建立合作伙伴关系。未来&#xff0c;虹科与b-plus将共同致力于提供用于ADAS/AD系统开发的V&V测量解决方案。 合作寄语 虹科CEO陈秋苑女士表示&#xff1a;“虹科非常期待与b-plus合作&#x…

Microsoft Dynamics 365:导入License到服务层,通过Business Central Administration Shell

本文主要是Microsoft Dynamics 365的License导入的图解干货&#xff0c;不多赘述&#xff0c;直接上图&#xff1a;第一步&#xff1a;准备好的License文件放在你喜欢的目录下第二步&#xff1a;到开始程序里找到并打开 Business Central Administration Shell3.第三步&#xf…

Day895.MySql误删数据还原方案 -MySQL实战

MySql误删数据还原方案 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于MySql误删数据还原方案的内容。 传统的高可用架构是不能预防误删数据的&#xff0c;因为主库的一个 drop table 命令&#xff0c;会通过 binlog 传给所有从库和级联从库&#xff0c;进而导致整…

ASE20N60-ASEMI的MOS管ASE20N60

编辑-Z ASE20N60在TO-247封装里的静态漏极源导通电阻&#xff08;RDS(ON)&#xff09;为0.4Ω&#xff0c;是一款N沟道高压MOS管。ASE20N60的最大脉冲正向电流ISM为80A&#xff0c;零栅极电压漏极电流(IDSS)为10uA&#xff0c;其工作时耐温度范围为-55~150摄氏度。ASE20N60功耗…

UVM实战--加法器

前言 这里以UVM实战&#xff08;张强&#xff09;第二章为基础修改原有的DUT&#xff0c;将DUT修改为加法器&#xff0c;从而修改代码以使得更加深入的了解各个组件的类型和使用。 一. 组件的基本框架 和第二章的平台的主要区别点 &#xff08;1&#xff09;有两个transactio…

我的三周年创作纪念日——学习不止,创作不停

机缘 最开始写文章博客&#xff0c;是为了用输出倒逼自己输入。 从校园离开后&#xff0c;才逐渐意识到学习的不容易。没有写好的教材课程、没有画好的考点重点&#xff0c;没有一起学习的同学&#xff0c;更没有明确的学习方向和路径。 数据分析方向可以学的东西太多了&…

P18 PyTorch 感知机的梯度推导

前言这里面简单介绍一下单层感知机和多层感知机的模型参考&#xff1a;https://www.bilibili.com/video/BV17e4y1q7NG?p41一 单层感知机模型输入: k 代表网络层数&#xff0c;i 代表输入节点的编号前向传播: 权重系数k: 层数i: 前一层输入节点编号j: 当前层输出节点编号这里&a…

软件工程学习

文章目录前言软件特点分类软件工程软件危机项目管理工具总结前言 本博客仅做学习笔记&#xff0c;如有侵权&#xff0c;联系后即刻更改 科普&#xff1a; 软件 软件的定义 软件不是程序&#xff0c;而是程序、数据以及开发、使用和维护程序需要的所有文档的完整集合。 特点 …

windows 安装Qt

下载 下载地址https://download.qt.io/&#xff0c;此文已5.7.0为例子。 根据图片依次选择即可。 安装 安装过程参考另一篇文章Ubuntu 安装 Qt5.7.0即可 配置环境变量 ps&#xff1a;我就是之前没配置环境变量&#xff0c;直接使用创建项目&#xff0c;项目源码直接运行是…

CentOS7安装MariaDB步骤

文章目录1.配置MariaDB yum源2.安装MariaDBMariaDB数据库管理系统是MySQL的一个分支&#xff0c;主要由开源社区在维护&#xff0c;采用GPL授权许可。 MariaDB的目的是完全兼容MySQL&#xff0c;包括API和命令行&#xff0c;使之能轻松成为MySQL的代替品。 CentOS 6 或早期的版…

数据结构与算法基础(王卓)(11):栈的定义及其基础操作(顺序表和链表的初始化、求长度,是否为空,清空和销毁、出栈、压栈)

栈的定义&#xff1a; stack&#xff1a;一堆&#xff0c;一摞;堆&#xff1b;垛; 顺序栈和链栈的设计参考&#xff1a; 数据结构与算法基础&#xff08;王卓&#xff09;&#xff08;7&#xff09;&#xff1a;小结&#xff1a;关于链表和线性表的定义及操作_宇 -Yu的博客-C…

备考软考系统分析师-1

系统分析师教程网盘资源&#xff1a;链接: https://pan.baidu.com/s/1ekHuCJJ3o5RrW1xeMkxhdA 提取码: 6666 信息系统战略规划 信息系统开发方法&#xff1a; 结构化法 瀑布模型 原型法 自顶向下 用于需求阶段较多 面向对象 自底向上 面向服务的方法 系统建模 政府信息…

MyBatis-Plus——代码生成器(3.5.1+版本)

文章目录配置数据源配置&#xff08;DataSource&#xff09;全局配置&#xff08;GlobalConfig&#xff09;包配置&#xff08;PackageConfig&#xff09;策略配置&#xff08;StrategyConfig&#xff09;模板引擎配置&#xff08;TemplateEngine&#xff09;代码生成器测试样例…

【2】MYSQL数据的导入与导出

文章目录 MYSQL-库(相同库名称)的导入导出MYSQL-库(不同库名称)的导入导出MYSQL-表的导入导出MYSQL-表的指定查询记录导入导出前提: 客户端工具是:SQLyog MYSQL-库(相同库名称)的导入导出 1、选中指定库——右键,选择【将数据库复制到不同的主机/数据库】 2、选中指…

客户服务知识库的最佳实践7个步骤

每个公司的声誉都依赖于客户&#xff0c;如果客户因为想要购买你的产品找到你&#xff0c;但是了解到你的客户服务做的不好&#xff0c;可能也会放弃你的产品&#xff0c;就像市场营销依赖于潜在客户的关系一样&#xff0c;公司的服务部门也需要依赖于现有客户的关系&#xff0…

arxiv2017 | 用于分子神经网络建模的数据增强 SMILES Enumeration

论文标题&#xff1a;SMILES Enumeration as Data Augmentation for Neural Network Modeling of Molecules论文地址&#xff1a;https://arxiv.org/abs/1703.07076代码地址&#xff1a;https://github.com/Ebjerrum/SMILES-enumeration一、摘要摘要中明显提出&#xff1a;先指…

AI又进化了,突破性革命来了

大家好&#xff0c;我是 Jack。 2023 年&#xff0c;AI 真的杀疯了。短短不到一年的时间&#xff0c;当我们还在感慨 AI 一键生成的二次元画作精美万分的时候&#xff0c;它已经进化到了写实美照也能手到擒来的地步。 更多的效果&#xff0c;可以看刚刚发布的视频&#xff0c;…

总是跳转到国内版(cn.bing.com)?New Bing使用全攻略

你是否想要使用强大的&#xff08;被削后大嘘&#xff09;New Bing&#xff1f; 你是否已经获得了New Bing的使用资格&#xff1f; 你是否在访问www.bing.com/new时提示页面不存在&#xff1f; 你是否在访问www.bing.com时总是重定向到cn.bing.com而使用不了New Bing? New Bi…

RocketMQ之(一)RocketMQ入门

一、RocketMQ入门一、RocketMQ 介绍1.1 RocketMQ 是什么&#xff1f;1.2 RocketMQ 应用场景01、应用解耦02、流量削峰03、数据分发1.3 RocketMQ 核心组成01、NameServer02、Broker03、Producer04、Consumer1.6 运转流程1.5 RocketMQ 架构01、NameServer 集群02、Broker 集群03、…