【TypeScript】认识TypeScript

❤️ Author: 老九
☕️ 个人博客:老九的CSDN博客
🙏 个人名言:不可控之事 乐观面对
😍 系列专栏:

文章目录

  • TypeScript
    • Javascript的缺点
    • 使用TypeScript重构
    • TypeScript的编译环境
      • 全局安装TS编译环境
      • TS编译简化
    • TS变量的声明
      • TS变量类型推导
      • 数据类型
        • Javascript数据类型
        • TypeScript数据类型
    • TS函数类型

TypeScript

Javascript的缺点

function getLength(args){return args.length
}// 调用函数
console.log(getLength("aaaa"));
console.log(getLength(["abc","cba","nba"]));
//这个就错误了,正常在编写代码的时候就要看到这个错误
console.log(getLength(123))
console.log(getLength())

Typescript就是为了解决JavaScript缺失类型检测机制的痛点,因为错误被发现的时机是越早越好

发现错误时机的顺序
写代码时候>代码编译时>代码运行期间>测试期间>上线后发现错误

TypeScript是拥有类型的JavaScript超集,还加了一些语法的扩展(枚举,元组等),TypeScript最终被编译为Javascript,不用担心兼容的问题

使用TypeScript重构

在这里插入图片描述
这样直接就在编写代码的时候就可以发现错误了

TypeScript的编译环境

我们需要先编写main.ts代码,然后将main.ts代码编译成main.js代码,之后再在浏览器上运行
如果不安装TS的编译环境,对编写代码来说是没有关系的,但是不能在浏览器上跑,因为浏览器只认识JS代码

全局安装TS编译环境

在这里插入图片描述
测试代码:

//string:TS给我们定义标识符的,提供的字符串类型
//String:JS中字符串的包装类
let message : string = "Hello world"

执行ts代码的步骤:
1.先把TS代码编译:tsc xxx.ts
2.执行刚才编译出来的js

TS编译简化

两种解决方案
在这里插入图片描述

如何安装ts-node?
npm install ts-node -g
npm install tslib @types/node -g
如何执行?
ts-node math.ts

TS变量的声明

var/let/const 变量名 : 数据类型 = 赋值
在这里插入图片描述

TS变量类型推导

在声明一个变量时,如果有直接进行赋值,会根据赋值的类型推导出变量的类型注解
在这里插入图片描述
注意:let类型进行推导,推导出来的是通用类型;但const类型进行推导,推导出来的是字面量类型
在这里插入图片描述
在这里插入图片描述

数据类型

Javascript数据类型

number:不区分int和double,统一为number类型
boolean:true和false,最简单
string:单引号双引号都可以,同时也支持模板字符串拼接变量

let name : string = "why"
let age : number = 18
let height : number = 1.88let info : string = `my name is ${name} ,  age is ${age} , height is ${height}`
console.log(info);export { };

symbol类型:通常我们在对象中是不能添加相同的属性名的,但是通过symbol,我们可以定义相同的名称
在这里插入图片描述
null类型
undefined类型

TypeScript数据类型

数组类型:有两种写法,第一种是string[],第二种是Array< T >,如果数组存放不同的类型,就用any

对象类型:通过type关键字定义对象里面的属性类型
在这里插入图片描述
any类型:可以代表任意类型,类似于Java中的Object类型

TS函数类型

函数的参数可以有类型,函数的返回值也可以有类型
返回值类型可以明确的指定,也可以自动进行类型推导
在这里插入图片描述

type LyricType = {time : numbertext : string
}
function parseLyric() : LyricType[]{const lyrics : LyricType[] = []lyrics.push({time:111,text:"愛してる"})return lyrics
}
const lyricInfos = parseLyric()
for(const item of lyricInfos){console.log(item.time,item.text);
}
export { }

♥♥♥码字不易,大家的支持就是我坚持下去的动力♥♥♥
版权声明:本文为CSDN博主「亚太地区百大最帅面孔第101名」的原创文章

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

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

相关文章

Websocket传输协议是什么

WebSocket 是一种网络通信协议&#xff0c;属于 HTML5 规范的一部分。它提供了在单个长期连接上进行全双工通信的能力&#xff0c;使得数据可以从客户端发送到服务器&#xff0c;也可以从服务器发送到客户端&#xff0c;这与传统的 HTTP 请求和响应模型不同。 WebSocket 协议定…

设数据为01101001,试采用4个校验位求其偶校验方式的海明码。

遇到一个题目&#xff0c;但是教材书上写的比较迷糊&#xff0c;看不懂&#xff0c;后来在网上搜了一下方法&#xff0c;发现还是比较简单的&#xff0c;现在分享一下我的解法 首先&#xff0c;套用公式&#xff1a;2k - 1 > n k 因为求得数字是8位数&#xff0c;n8&#x…

微信小程序导入js使用时候报错

我是引入weapp库时候&#xff0c;导入js会报错。 需要在小程序开发工具里面配置 就可以了。

Python中的sys模块详解

1. 简介 sys模块是Python标准库中的一个内置模块&#xff0c;提供了与Python解释器和运行环境相关的功能。它包含了一些与系统操作和交互相关的函数和变量&#xff0c;可以用于获取命令行参数、控制程序的执行、管理模块和包、处理异常等。 2. 常用函数和变量 2.1 命令行参数…

ubuntu安装python以及conda

切换国内镜像源 备份下 sudo cp /etc/apt/sources.list /etc/apt/sources_init.list 更换源 sudo vi /etc/apt/sources.list 开头加 deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-sec…

【Linux】Linux项目部署及更改访问端口号和jdk、tomcat、MySQL环境搭建的配置安装

目录 一、作用 二、配置 1、上传安装包 2、jdk 2.1、解压对应安装包 2.2、环境变量搭建 3、tomcat 3.1、解压对应安装包 3.2、启动 3.3、设置防火墙 3.4、设置开发端口 4、MySQL 三、后端部署 四、Linux部署项目 1、单体项目 五、修改端口访问 1、进入目录 2…

Annotorious入门教程:图片注释工具

本文简介 最近有工友问我前端怎么给图片做标注。使用 Fabric.js 或者 Konva.js 等库确实可以实现&#xff0c;但我又好奇有没有专门做图片标注的工具呢&#xff1f; 在网上搜了一下发现 Annotorious 可以实现这个功能。Annotorious 提供了图片注释和标注功能&#xff0c;而且…

数字化时代,数据仓库是什么?有什么用?

在激烈的市场竞争和全新的数字经济共同作用下&#xff0c;数字化转型成为了大多数企业的共识&#xff0c;也是获取数字经济的最佳方式。在整个数据价值生产链路中&#xff0c;数据仓库的主要作用就是中心化分发&#xff0c;将原始数据与数据价值挖掘活动隔离。 所有的原始数据…

图像二值化阈值调整——cv2.threshold方法

二值化阈值调整&#xff1a;调整是指在进行图像二值化处理时&#xff0c;调整阈值的过程。阈值决定了将图像中的像素分为黑色和白色的界限&#xff0c;大于阈值的像素被设置为白色&#xff0c;小于等于阈值的像素被设置为黑色。 首先画出灰度直方图&#xff1a;横坐标是灰度值…

React中的状态管理

目录 前言 1. React中的状态管理 1.1 本地状态管理 1.2 全局状态管理 Redux React Context 2. React状态管理的优势 总结 前言 当谈到前端开发中的状态管理时&#xff0c;React是一个备受推崇的选择。React的状态管理机制被广泛应用于构建大型、复杂的应用程序&#xf…

【漏洞复现】74cms任意文件读取

漏洞描述 74CMS 是一款国内用的比较多招聘网站管理系统&#xff08;Job Board CMS&#xff09;&#xff0c;专注于招聘和人力资源领域的网站建设&#xff0c;存在任意文件读取漏洞 免责声明 技术文章仅供参考&#xff0c;任何个人和组织使用网络应当遵守宪法法律&#xff0c…

面向网络安全-Python语言

目录 1、变量 2、字符串 3、列表 4、字典 5、网络 6、条件选择语句 7、异常处理 1、变量 变量是指储存在某个内存地址上的数据 主要有&#xff1a;整型数、实数、布尔值、字符串、列表、元组、字典 这些数据在声明后&#xff0c;解释器就会自动确定每个变量的类型&…

opencv在linux上调用usb摄像头进行拍照

功能 1.按照指定的文件名创建文件夹&#xff0c;创建之前判断该文件夹是否存在 2.调用摄像头按可调整窗口大小的方式显示 3.按esc退出摄像头画面 4.按p保存当前摄像头的画面&#xff0c;并按当前时间为照片的名字进行保存打开终端查看是否有摄像头 ls /dev/video*一般video1就…

MyBatis实现多表映射、分页显示、逆向工程

目录 一、MyBatis实现多表映射 1.1 实体类设计 1.2 一对一关系实现案例 1.3 对多配置实现案例 1.4 设置自动映射与n张表关联映射 二、MyBatis实现分页功能 2.1 mybatis插件工作原理 2.2 引入插件与插件的使用 三、逆向工程插件 3.1 什么是逆向工程 3.2 MyBat…

Stable Diffusion WebUI扩展sd-webui-controlnet安装教程

话不多说,上链接: https://github.com/Mikubill/sd-webui-controlnethttps://github.com/Mikubill/sd-webui-controlnet同样,直接安装到extensions文件中。 什么conda还是python安装也不多说了,前面很多讲了如何安装,这里就不当赘婿了。 安装好后,我们最好手动安装模型…

毕马威加入IBM量子网络,已搭建完成通信行业量子电路!

毕马威全球量子中心主管Bent Dalager&#xff08;图片来源&#xff1a;网络&#xff09; 随着全球企业技术的持续转型&#xff0c;量子计算在开发创新解决方案上越来越重要。为此&#xff0c;毕马威(KPMG)公司加入了IBM量子网络&#xff0c;旨在利用量子计算解决当今最复杂的业…

SpringBoot可以同时处理多少请求?

前言 前两天面试的时候&#xff0c;面试官问我&#xff1a;一个ip发请求过来&#xff0c;是一个ip对应一个线程吗&#xff1f;我突然愣住了&#xff0c;对于SpringBoot如何处理请求好像从来没仔细思考过&#xff0c;所以面试结束后就仔细研究了一番&#xff0c;现在就来探讨一…

go语言 | grpc原理介绍(一)

参考 https://www.nowcoder.com/discuss/389810396381683712?sourceSSRsearch 这里是b站对应的csdn博客&#xff0c;比较详细的介绍grpc相关原理说明&#xff0c;首先是大概的一个流程图说明。 什么是 RPC &#xff1f; 远程过程调用&#xff08;RPC&#xff09;是计算机科…

一文全览各种 ES 查询在 Java 中的实现

2 词条查询 所谓词条查询&#xff0c;也就是ES不会对查询条件进行分词处理&#xff0c;只有当词条和查询字符串完全匹配时&#xff0c;才会被查询到。 &#xfeff; 2.1 等值查询-term 等值查询&#xff0c;即筛选出一个字段等于特定值的所有记录。 &#xfeff; SQL&…

LLaMA-Adapter源码解析

LLaMA-Adapter源码解析 伪代码 def transformer_block_with_llama_adapter(x, gating_factor, soft_prompt):residual xy zero_init_attention(soft_prompt, x) # llama-adapter: prepend prefixx self_attention(x)x x gating_factor * y # llama-adapter: apply zero_init…