首页 > 其他分享 >TypeScript第一天学习记录

TypeScript第一天学习记录

时间:2022-10-30 00:33:33浏览次数:58  
标签:TypeScript number 第一天 记录 代码 TS JS 类型

2022年10月29日19点17分

1.TypeScript是什么

1.1 TypeScript是什么?

TypeScript(简称:TS)是JavaScript的超集(JS有的TS都有)

TypeScript = Type+Javascript(在JS基础之上,为JS添加了类型支持)

TypeScript是微软开发的开源编程语言,可以在任何运行JavaScript的地方运行

//TypeScript代码:有明确的类型,即:number(数值类型)
let age1: number=16
//JavaScript代码:无明确的类型
let age2 = 16

1.2 TypeScript为什么要为JS添加类型支持?

背景:

JS的类型系统存在“先天缺陷”,JS代码中绝大部分错误都是类型错误(Uncaught TypeError)

问题:

增加了找Bug、改Bug的时间,严重影响了开发效率

 

从编译语言的动静来区分,TypeScript属于静态类型的编程语言,JS属于动态类型的编程语言。

静态类型:

编译期做类型检查

动态类型:

执行期做类型检查

代码编译和代码执行的顺序:

①编译

②执行

 

对于JS来说:

需要等到代码真正去执行的时候才能发现错误(晚)

对于TS来说:

在代码编译的时候(代码执行前)就可以发现错误(早)

并且,配合VSCode等开发工具,TS可以提前到在编写代码的同时发现代码中的错误,减少找bug,改bug的时间

 

1.3 TypeScript相比JS的优势

①更早(写代码的同时)发现错误,减少找Bug、改Bug的时间,提升了开发效率

②程序中任何位置的代码都有代码提示,随时随地的安全感,增强了开发体验

③强大的类型系统提升了代码的可维护性,使得重构代码更加容易

④支持最新的ECMAScript语法,优先体验最新的语法,让你走在前端技术的最前沿

⑤TS类型推断机制,不需要在代码中的每个地方都显示标注类型,让你再享受优势的同时,尽量降低了成本

 

除此之外,Vue3源码使用TS重写、Angular默认支持TS、React与TS完美配合,TypeScript已成为大中型前端项目的首先的编程语言

 

2.TypeScript初体验

2.1安装编译TS的工具包

问题:为什么要安装编译TS的工具包?
回答:

Node.js/浏览器,只认识JS的代码,不认识TS代码。需要先将TS代码转化为JS代码,然后才能运行

安装命令:
npm i -g typescript
typescript包:

用来编译TS代码的包,提供了 tsc命令,实现了TS->JS的转化。

验证是否安装成功:
tsc -v //插件typescript的版本

2.2编译并运行TS代码

①创建hello.ts文件(注意:TS文件的后缀名是.ts)

②.将TS编译为JS:在终端中输入命令,tsc hello.ts(此时,在同级目录中会出现一个同名的JS文件)

③执行JS代码:在终端中输入命令,node hello.js

说明:

所有合法的JS代码都是TS代码,有JS基础只需要学习TS的类型即可

注意:

由TS编译生成的JS文件,代码中就没有类型信息了

编译后报错:

因为JS文件和TS文件重复声明变量导致报错

①关闭js文件后就不会报错了

②控制台输入tsc -- int 生成tsconfig.json配置文件也可以解决报错

2.3简化运行TS的步骤

问题描述:

每次修改代码后,都要重复执行两个命令,才能运行TS代码,太繁琐

简化方式:

使用ts-node包,”直接“在Node.js中执行TS代码

安装命令:
npm i -g ts-node(ts-node包提供了ts-node命令)
使用方式:
ts-node hello.ts
解释:

ts-node命令在内部偷偷地将TS转换成JS后再执行JS代码

19点59分

 

23点00分

3.TypeScript常用类型

概述:

TypeScript是JS的超集,TS提供了JS的所有功能,并且额外增加了:类型系统

①所有的JS代码都是TS代码

②JS有类型(比如 number、string等),但是JS不会检查变量的类型是否发生变化。而TS会检查。TypeScript类型系统的主要优势:可以显示标记出代码中的意外行为,从而降低了发生错误的可能性

3.1.类型注解

//示例代码
let age: number = 18

说明:代码中的:number就是类型注解 作用:为变量添加类型约束。比如,上述代码中,约定变量age的类型为number(数值类型)

解释:约定了什么类型,就只能给变量赋值改类型的值,否则会报错

3.2.常用基础类型

概述:可以将TS中的常用基础类型细分为两类:①JS已有的类型 ②TS新增的类型

①JS已有类型:

原始类型:number/string/boolean/null/undifined/symbol

对象类型:Object(包括了数组、对象、函数等对象)

②TS新增类型

联合类型、自定义类型(类型别名)、接口、元组、字面量类型、枚举、void、any等

3.3原始类型

特点:

number/null/undifined/symbol/string/boolean

简单。这些类型完全按照JS中类型的名称来书写的

3.4数组类型

特点:

对象类型,再TS中更加细化,每个具体的对象都有自己的类型语法

数组类型的两种写法:(推荐使用number[]写法)

let numbers: number[] = [1,3,5]
let Strings: Array<string> = ['a','b','c']
联合类型:
let arr: (number | string)[] = [1,'a',2,'b']
let arr: number | string[] = [1,2]、
let arr: (number | string)[] = ['a','b']

解释:|(竖线)在TS中叫来联合类型(由两个或者多个其他类型组成的类型,表示可以是这些类型中的任意一种)

注意:①这是TS中联合类型的语法,只有一根竖线

②添加的小括号表示,首先是数组,然后这个数组中能够出现number或者string类型的元素

③不添加小括号表示,既可以是number类型,也可以是string类型,但是只能是其中一个

3.5类型别名

类型别名(自定义类型):为任意类型起别名。

使用场景:当同一类型(复杂)被多次使用时,可以通过类型别名。简化改类型的使用

type CustomArray = (number | string)[]
let arr1: CustomArray = [1,'a',2,'g']
let arr2: CustomArray = [1,'a',2,'g']

解释:

1.使用type关键字来创建类型别名

2.类型别名(比如,此处的CustomArray),可以是任意合法的变量名称

3.创建类型别名后,直接使用该类型别名作为变量的类型注解即可

3.6函数类型

函数的类型实际上指的是:函数参数和返回值的类型。

为函数指定类型的两种方式:

①单独指定参数、返回值的类型

function add(num1: number,num2: number): number{
 return num1+num2
}
const add = (num1: number, num2: number): number=>{
 return num1 + num2
}

 

②同时指定参数、返回值的类型

const add: (num1: number, num2: number)=>number =(num1,num2)=>{
 return num1+num2
}

解释:当函数作为表达式的时候,可以通过类似箭头函数形式的语法来为函数添加类型。

注意:这种形式只适用于函数表达式

如果函数没有返回值,则设置函数返回值的类型为void

function greet(name: string): void{
 console.log('safsa');
}

 

使用函数实现某个功能的时候,参数可以传也可以不传。这种情况下,在给函数参数指定类型时,就用到可选参数了。比如,数组的slice方法,可以slice ()也可以slice(1)还可以slice(1,3)

function mySlice(start?: number, end?: number): void{
 console.log('起始索引:',start,'结束索引: ',end);
 
}


mySlice() //起始索引: undefined 结束索引 undefined
mySlice(1) //起始索引: 1 结束索引 undefined
mySlice(1,2) //起始索引: 1 结束索引 2  

可选参数:在可传可不传的参数名称后面添加?(问好)

注意:可选参数只能出现在参数列表的 最后,也就是说可选参数后面不能再出现必选参数

2022年10月30日00点29分

标签:TypeScript,number,第一天,记录,代码,TS,JS,类型
From: https://www.cnblogs.com/xjh954/p/16840313.html

相关文章

  • 记录一次redis分布式锁的坑
    redis分布式锁的实现方式是:lock(){sync(this){//无法获取自旋setnx(key,UUID)setex(60s)returnUUID}}unlock......
  • Typescript的基本介绍
    Typescript的基本介绍0.介绍​​TypeScript​​是JavaScript的一个超集,主要提供了类型系统和对ES6的支持,它由Microsoft开发,代码​​开源于GitHub​​上。其次引用......
  • 个人算法学习记录
    个人算法学习记录暑假准备夏令营的时候学习了一些算法,并作了记录。想法是学完所有内容,然后记录下来,然而想法是美好的,实际上只学到了动态规划那一章,并且只记录了最简单的几......
  • TypeScript日期工具: date-fns日期工具的使用方法
    1、引入$npminstall--savedate-fns2、使用import{isToday,isYesterday,isTomorrow,format,addYears,addMonths,addDays,addHours,add......
  • [Typescript] 79. Medium - MapTypes
    Implement MapTypes<T,R> whichwilltransformtypesinobjectTtodifferenttypesdefinedbytypeRwhichhasthefollowingstructuretypeStringToNumber=......
  • [Typescript] 78. Medium - Unqiue
    ImplementthetypeversionofLodash.uniq,UniquetakesanArrayT,returnstheArrayTwithoutrepeatedvalues.typeRes=Unique<[1,1,2,2,3,3]>;//exp......
  • 【TypeScript】语法精讲
    TypeScript的编译环境#安装命令npminstalltypescript-g#查看版本tsc--versionTypeScript的运行环境#安装ts-nodenpminstallts-node-g#另外ts-node需要依赖tslib......
  • typeScript基础语法
    1.变量定义变量名:变量的类型(首字母小写)letdan:string='蛋'letnumArr:number[]=[4,2,0];2、核心定义任何东西的时候要注明类型调用任何东西的时候要检查类型3......
  • 使用python 接入LDAP验证系统实践记录
    LDAP简介LDAP(LightDirectoryAccessPortocol)是轻量目录访问协议,基于X.500标准,支持TCP/IP。LDAP基本概念LDAP的目的是为各种软件提供统一标准的认证机制,所有软件就可......
  • 阿里云的RDS 使用 记录
     --线上产品抱错如下:TheMySQLserverisrunningwiththeLOCK_WRITE_GROWTHoptionsoitcannotexecutethisstatement 看起来是锁了,原因是RDS满了,阿里云看起来......