第六届青训营笔记二 | 青训营

84 阅读2分钟

这篇笔记主要记录typescript的学习笔记。

什么是TypeScript

JS:动态类型 弱类型语言

会在执行时做类型检验和匹配

TS:静态类型 弱类型语言

会在执行前检验和匹配

静态类型:

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

JS的超集:

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

弱类型语言特征:类型转化

编辑器推荐

VS code

基本语法

基础数据类型

/*字符串*/
const q = 'string'
/*数字*/
const w = 1;
/*布尔值*/
const e = true;
/*null*/
const r = null;
/*undefined*/
const t = undefined;

ts写法

/*字符串*/
const q: string = 'string'
/*数字*/
const w: number = 1;
/*布尔值*/
const e: boolean = true;
/*null*/
const r: null = null;
/*undefined*/
const t: undefined = undefined;

对象类型

定义对象类型名称时会在名词前加"I"表示该对象是一个类型

eg:const bytedancer:IBytedancer = {}

定义类型使用interface

函数类型

函数也支持使用interface定义类型

函数重载

function getDate(type:'string',timestamp?: string):string

timestamp为可缺省函数,在变量后加一个“?”则为可缺省函数

数组类型

常见用第一、二种

类型+方括号表示:

type IArr1 = number[]

泛型表示:

type IArr2 = Array<string | number | Record<string,number>>

元组表示: type IArr3 = [number,number,string,string]

接口表示:

interface IArr4 {

[key:number]:any }

TS泛型

在不定义类型时类型不明确,用target指代

function getRepeatArr(target){
  return new Array(100).fill(target)}
  
type IGetRepeatArr = (target:any) => any[]
​
type IGetRepeatArrR = <T>(target: T) => T[]

泛型不止应用在函数中

泛型约束:使用extends

type IGetRepeatStringArr = <T extends string> 限制泛型必须符合字符串

泛型参数默认类型

type IGetRepeatArr<T = number> =(target:T)

默认了数据类型为number类型

这两者是有区别的。