TypeScript学习笔记1---认识ts与js的异同、ts的所有数据类型详解

本文主要是介绍TypeScript学习笔记1---认识ts与js的异同、ts的所有数据类型详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:去年做过几个vue3+js的项目,当时考虑到时间问题,js更加熟悉,学习成本低一点,所以只去了解了vue3。最近这段时间补了一下ts的知识点,现今终于有空来码文章了,做个学习总结,方便以后复习。(与文章中有表达不妥的地方欢迎指正,一起进步!)

一、TypeScript的基本概念

  • TypeScript编程语言是微软推出的一款开源的开发语言
  • TypeScript是JavaScript的超集。TypeScript也是基于JavaScript来进行开发的,具备JavaScript所有特性,支持完整的ES6\ES5等等语法。
  • 学习TypeScript就相当于在学习JavaScript,更多要学习的TypeScript中编程规范
  • 比如TypeScript中我们可以进行数据类型约束,一旦有了约束后我们程序设计会更加规范

二、回顾JavaScript特点

JavaScript是弱类型语言,在js中定义变量无需声明数据类型,数据类型都是根据赋的值来确定的

var i = 10
var k  = "xianzhi"typeof i ===>number
typeof k ===>string

如果我对i这个变量进行修改,i的数据类型就会随之改变

i = "heiheihei"typeof i ===>string

 与弱类型语言对应的就是强类型语言,比如Java、C++等

强类型语言一旦在定义变量的时候,确定了数据类型,以后就只能赋值相同数据类型的结果

int i = 10  --->int代表数据类型,整数类型i = "heiheihei" //程序会报错

所以JavaScript会有一些缺点:我们的代码经常在运行过程中才发生报错,而Typescript正好可以帮助我们,在编写代码的时候就检测到错误。

三、Typescript能帮助我们解决的问题

  • TS是JS的超集,完全遵循我们ES5、ES6的标准。写TS代码就是在写JS代码。只是提供了更多的约束。更多规范要求我们写代码必须按照规范来写,否定编译不通过。
  • TypeScript代码——-编译——JavaScript
  • 这个编译过程会检测你的语法是否正确,如果语法有问题,规范不正确,那就会抛出异常。
  • 可以减少代码在运行时报错

四、Typescript的数据类型

1、数字类型:number

var price:number = 20
price = true //报错.必须指定price值为number才能编译通过

2、字符串类型:string

var username:string = "hhhhhh"
username = "jjjjj"

3、布尔类型:boolean

var flag:boolean = true
flag = false

4、数组类型

数组类型语法1  :number[]  :string[]
// 语法一
let array:number[] = []
array.push(1)
array.push(2)let array2:string[] = []
array2.push("xiaowang")
array2.push("1")

注:定义数组时定下来了里面的数据类型,以后这个数组就只能存放对应的数据类型,放错数据类型就会报错

数组类型语法2  :Array<number>  :Array<string>
let array3:Array<number> = []
array3.push(1)

这里使用到了泛型,Array代表数组类型,<number>数组里面存放的number数据类型

5、 undefined和null

在TS中我们一般用undefined和null来表现我们可能出现的特殊情况.

/*** undefined 和 null* 在TS中,变量没有赋值之前不能使用* a的数据类型要么number,要么undefined*/
let a: number | undefined;
console.log(a,'赋值前');
a = 66;
console.log(a,'赋值后');let b: string | null = null;
console.log(b,'赋值前');
b = "heiheihei";
console.log(b,'赋值后');

输出结果: 

6、元组类型

元组类型是数组类型一种衍生,扩展.

数组类型默认只能存放统一数据类型的值.要么全是number\要么全是string类型

如果一个数组要存放多个数据类型,就可以考虑用元组来实现

let point:[number,string,boolean] = [1,"heiheihei",true]

7、枚举类型

这里先说一个场景:比如一条网络攻击,有“攻击失败”、“攻击成功”、“攻击中”等多个状态,如以下代码

//后端传过来的数据
const record = {id:1,name:"永恒之蓝",state:1
}
//前端处理逻辑
if(record.state==1){}else if(record.state==2){}

这里的state是后端代表攻击状态的字段,我们需要去猜测1/2/3代表什么意思,就是这里是魔鬼数字,以前处理我们就是给代码加注释,但是ts代码可以这样写一个枚举类型:

// 后端数据
const record = {id:1,name:"永恒之蓝",state:1
}/*** 枚举类型*/
enum recordState {attackSuccess=1,attackError=2,attackIng=3
}if(record.state == recordState.attackSuccess){}else if(record.state == recordState.attackError){}else if(record.state == recordState.attackIng){}

注:枚举类型里面状态必须是有限的,一旦写了以后代码就可以直接用枚举中的状态,代码解构会更加清晰

8、any类型

表达任意类型的一个基础类型,主要用于表达哪些无法用准确的数据类型来进行表示的场景

比如我们要获取页面上某个节点,这种情况下我们不好用数据类型来表达,为了满足ts的规范,我们可以使用any来进行类型声明

定义一个数组,这个数组里数据可以有多种类型

let age:any = "xiaowang"
age = 20  //any意义就不大const element:any =  document.getElementById("app")let array:any = [1,"xiaowangf",true] //编译没有问题

9、never类型 

  • never类型表示哪些永远不存在的值
  • never类型的应用场景比较局限,主要表达哪些总会抛出异常或者不会有返回值的函数表达式或者箭头函数。
let others:never;
others = (()=>{throw new Error("错误")
})()

10、object类型

在TS开发过程中object类型可以表达三种结果,表示值为{}、也可以[]、还可以是function

/*** object数据类型*/
let obj1:object = {}
let obj2:object = []
let obj3:object = function(){
}
let obj4:object = {id:1}
console.log(obj4.id); //报错,obj4找不到id属性

 这里的obj4.id会报错:

修改成这样就不报错了:

let obj4:{id:number} = {id:1}

 

定义一个对象,要明确告诉TS代码,我的对象里面有哪些东西

let student:{id: number;name: string}
student = {id:1,name:"ddd"}

这篇关于TypeScript学习笔记1---认识ts与js的异同、ts的所有数据类型详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1090748

相关文章

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

MyBatis常用XML语法详解

《MyBatis常用XML语法详解》文章介绍了MyBatis常用XML语法,包括结果映射、查询语句、插入语句、更新语句、删除语句、动态SQL标签以及ehcache.xml文件的使用,感兴趣的朋友跟随小... 目录1、定义结果映射2、查询语句3、插入语句4、更新语句5、删除语句6、动态 SQL 标签7、ehc

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash

Java中的.close()举例详解

《Java中的.close()举例详解》.close()方法只适用于通过window.open()打开的弹出窗口,对于浏览器的主窗口,如果没有得到用户允许是不能关闭的,:本文主要介绍Java中的.... 目录当你遇到以下三种情况时,一定要记得使用 .close():用法作用举例如何判断代码中的 input