TypeScript入门|青训营笔记

64 阅读4分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第4天

什么是TypeScript?

TypeScript发展史

  • 2012-10: 微软发布了 TypeScript 第一个版本 (0.8)
  • 2014-10: Angular 发布了基于 TypeScript 的 2.0 版本
  • 2015-04: 微软发布了 Visual Studio Code
  • 2016-05: @types/react 发布,TypeScript 可开发 React
  • 2020-09: Vue 发布了 3.0 版本,官方支持 TypeScript
  • 2021-11: v4.5版本发布

JS与TS的对比

JSTS
动态类型静态类型
弱类型语言弱类型语言

静态类型

  • 可读性增强:基于语法解析TSDoc,ide增强
  • 可维护性增强:在编译阶段暴露大部分错误
  • 多人合作的大型项目中,获得更好的稳定性和开发效率

JS的超集

  • 包含于兼容所有Js特性,支持共存
  • 支持渐进式引入与升级

TypeScript基本语法

1、基础数据类型

基本数据类型:包括字符串、数字、布尔、null、undefined等。

const q:string = 'string'
const w:number = 1
const e:boolean = true
const r:null = null
const t:undefined = undefined

2、对象类型

对象是包含一组键值对的实例。 值可以是标量、函数、数组、对象等

只读属性任意属性可选属性
在 TypeScript 中,我们可以将属性标记为 readonly,表示这是一个只读属性如果是一个普通类型,在赋值过程中改变类型是不被允许的接口里的属性不全都是必需的。 有些是只在某些条件下存在,或者根本不存在。 例如给函数传入的参数对象中只有部分属性赋值了。

3、函数类型

函数是一组一起执行一个任务的语句。您可以把代码划分到不同的函数中。如何划分代码到不同的函数中是由您来决定的,但在逻辑上,划分通常是根据每个函数执行一个特定的任务来进行的。函数声明告诉编译器函数的名称、返回类型和参数。函数定义提供了函数的实际主体。

(1)直接定义函数类型

函数类型的定义包括对参数返回值的类型定义:

function add(arg1: number, arg2: number): number {
  return x + y;
}
const add = (arg1: number, arg2: number): number => {
  return x + y;
};
(2)接口定义函数类型

使用接口可以清晰地定义函数类型。下面来使用接口为add函数定义函数类型:

interface Add {
  (x: number, y: number): number;
}
  const mult:IMult=(x,y)=>x*y;
(3)类型别名定义函数类型

可以使用类型别名来定义函数类型,这种形式更加直观易读:

type Add = (x: number, y: number) :number{
return x+y;
}
const mult: (x: number, y: number) => number = (x, y) => x * y;

4、函数重载

这个概念是在一些强类型语言中才有的,在JS中依据不同参数类型或参数个数执行一些不同函数体的实现很常见,依托于TypeScript,就会有需要用到这种声明的地方。

关于函数重载,必须要把精确的定义放在前面,最后函数实现时,需要使用 |操作符或者?操作符,把所有可能的输入类型全部包含进去,以具体实现。

TS的高级类型

1、联合和交叉类型

联合类型:IA|IB; 联合类型表示一个值可以是几种类型之一。

交叉类型:IA &BI;多种类型叠加到一起成为一种类型,它包含了所需的所有类型的特性。

const bookList [
author:'xiaoming',
type:'history',
range:'2001-2021',
},{
author:'xiaoli',
type:'story',
theme:'love',
}]
type IBookList Array<{
author:string;
}&({
type:'history';
range:string;
}|{
type:'story";
theme:string;
})>

2、类型保护与类型守卫

类型守卫:定义一个函数,它的返回值是一个类型谓词,生效范围为子作用域。

联合类型十类型保护=自动类型推断;

Typescript工程应用-Web

1.安装Node与npm

2.配置tsconfig.js文件

3.使用npm安装tsc

4.使用tsc运行编译得到s文件

总结

TS增加了代码的可读性和可维护性,可以在编译时进行报错。提前发现错误,减少改BUG时间,即使编译报错也可以默认生成JS文件。