当前位置:网站首页>TypeScript简记(一)
TypeScript简记(一)
2022-08-09 09:04:00 【月牙尔】
TypeScript简介
Typescript特点:
- 可读性增强:基于语法解析TSDos,ide增强
- 可维护性增强:在编译阶段暴露大部分错误。(多人合作的大型项目中,获得更好的稳定性和开发效率)
- 包含于兼容所有JS特性,支持共存
- 支持渐进式引入与升级
TS相比JS的优势:
- TypeScript工具使重构更变的容易、快捷。
- TypeScript 引入了 JavaScript 中没有的“类”概念。
- TypeScript 中引入了模块的概念,可以把声明、数据、函数和类封装在模块中
- 类型安全功能能在编码期间检测错误,这为开发人员创建了一个更高效的编码和调试过程。
编译器推荐:Vscode
TypeScript基本数据类型
- any(任意类型):声明未any的变量可以赋予任意类型的值;
- number(数字类型):双精度64位浮点值。它可以用来表示整数和分数;
- string(字符串类型):使用单引号或者双引号表示字符串类型。反引号可定义多行文本;
- boolean(布尔类型):表示逻辑值:true和false;
- 数组类型:声明变量为数组;
- void类型:无类型,只能赋予undefined和null。
扩展:
- 元组类型: 用来表示已知元素数量和类型的数组,各元素类型不必相同,在声明时对应位置的类型需要相同;
- enum(枚举类型):用于定义数值集合;
- null:表示对象缺失;
- undefined:初始化变量一直未定义的值;
- never是其他类型的子类型,代表从不会出现的值。
TypeScrip对象数据类型
接口(interface):在面向对象的编程中,接口是一种规范的定义,它定义了行为和动作的规范,在程序设计你面。接口起到一种限制和规范的作用。
注:使用interface关键字定义接口一般首字母大写,并在接口名称上加上大写 I 前缀。
- 任意属性:约束所有对象属性都必须是该属性的子类型;
- 只读属性:约束属性不可在对象初始化外赋值(在对象的属性前加关键字readonly);
- 可选属性:定义该属性可以不存在(在该属性后加上?)。
TypeScrip函数类型
TS中有两种常见的定义函数的方式——函数声明和函数表达式
函数声明:
function sun(x: number, y: number): number{
return x + y;
}
函数表达式:
let sum: (x: number, y: number) => number = function(x: number, y: number): number{
return x + y;
}
注:不要混淆了TS中的=>和ES6中的=>
TS中表示函数的定义,左边是输入类型,需要用括号括起来,右边是输出类型,
ES6中是一种应用广泛的箭头函数。
TypeScript重载
函数重载:具备不同参数的同名函数。
函数重载具有两天特征:名称相同,参数不同(参数类型、个数不同)
函数重载是多态的一种体现
TS中函数重载主要包括两部分:函数声明,和函数实现。
函数声明:是TSC解析的一种声明体现,实际编译中,并不好编译成具体代码。
参数不同的函数重载:
function print(info: string, message: string): void;
而当着两种声明,同时存在在TS的声明文件中,我们就需要用函数重载来实现,这是js没有的特性。
参数个数相同,但是类型不同的函数重载
函数声明中参数的类型是不同的,在这种情况下,就要用到联合类型
function print(message: string | number) {
conlose.log(message)
}
可以看出,在TS中实现函数重载的方式分别是利用了TypeScript中的两个类型特性:可选类型和联合类型。
边栏推荐
猜你喜欢
Static routing principle and configuration
[Vulnerability reproduction] CVE-2018-12613 (remote file inclusion)
mysql-5.5.40的完全卸载
Anaconda4.8.3介绍、安装及使用教程安装(win10)并修改Jupyter默认工作目录
Regular Expressions for Shell Programming
Some of the topics in VNCTF2021 are reproduced
历史遗留问题
零搜索量的关键词,你需要布局吗?
RDMA
ctf misc 图片题知识点
随机推荐
探索APP性能优化之稳定性优化(解决方案)
RESTful
Where does detection go forward?
内存中的swap机制
parse <compoN> error: Custom Component‘name should be form of my-component, not myComponent or MyCom
困扰很久的问题。今天下午搞定了。
缓存的使用姿势:缓存穿透了怎么办?
NodeMCU(ESP8266) 接入阿里云物联网平台 踩坑之旅
[Vulnerability reproduction] CVE-2018-7490 (path traversal)
vim 按了Ctrl+S后 卡死
VNCTF2021 部分题目复现
QT program generates independent exe program (pit-avoiding version)
QT程序生成独立exe程序(避坑版)
SQL server中的数据类型
1. LVGL 8.3 在 Visual Studio 2019 模拟器中的环境搭建
PoPW token distribution mechanism may ignite the next bull market
leetcode 32. 最长有效括号 (困难)
加密技术和电子竞技如何促进彼此的发展
深度学习时代的视频理解综述
嵌入式之串口中断只能收到一个字节