typescript函数详解

断言与非空断言与可选链

[collapse title="断言"]主动声明变量位某一类型,可用于强制转化数据类型[/collapse]

[collapse title="非空断言"]主动声明某一变量为非空,防止编辑报错,但无法解决实际逻辑问题

此处声明ID为非空变量避免传入unknown导致的bao'c[block]

printID(ID?:string){
  console.log(ID!.longth)
}
printID()

[/block][/collapse]

[collapse title="可选链式调用"]顾名思义在链式调用时通过?标注可能存在的属性,最底层可以忽略可选类型的存在与否,而直接调用,比如此处的type[block]

type person = {
  name:
  friend?:{
    name:
    hobby:{
      type?:
    }
  }
}
const printmsg(human:person){
  console.log(human.frind?.hobby.type)
}

[/block][/collapse]

[collapse title="??和!!"]!!用于转化非Boolean类型为Boolean,??用于设置默认值[block]
[/block]

[/collapse]

[collapse title="字面变量"]不给变量标志类型,时赋的值就是变量的类型,且必须和所赋值相同(意味着如果是字面量赋值,你是不可以随意更改的)字面量类型是多个组合起来,形成特地的可选输入功能,所以输入时,输入的变量要和要求的字面量一致,(如果不一致操他妈,汉字屌用没有太不精确了!)但是默认推断不会是字面量,所以要么精确设置变量类型要么就缩写变量类型。

[/collapse]

[collapse title="函数类型"]函数也是变量也有类型,无参的函数基本类型是()=>{}(括号中形参不可省略,否则会认为是any类型)[/collapse]

[collapse title="可选参数,默认参数,剩余参数"]可选参数,必须放在最后,且必须输入undefine,默认参数最好放最后,必须输入unknown,剩余参数前面加...老表示可以传入任意多个数,必须放最后[/collapse]

  • 38.1函数重载:对于联合类型 ID:string | number 在对此类变量进行加减操作的函数,需要类型缩小和类型判断过于麻烦,所以函数重载,先多次定义函数的输入的具体变量类型,string和string,number和number,然后再二次定义函数,不过此时放宽对变量类型的要求,就实现了和联合类型一样的效果,并且函数内部会自动根据输入进行运算,避免无法提前推断变量具体类型导致的错误。

前端路由是个啥

[danger][/danger]

阅读本文需要计算机网络基础

什么是前端路由

我们都知道,当客户端请求网页的时候,首先得知道url,然后就是dns解析,服务器收到url,反向传输给客户端那一系列事情。

这样没错,但问题在于每次要新页面的时候都需要单独向服务器请求一次并发送url。即便现在的tcp协议有keep-alive和管线化,滑动窗口等机制。但无论如何总比不是直接从本地拉起快,从客户端缓存机制也可以看出这一点。所以现在,SPA技术单页面富应用的解决措施是,一次性把所有当前请求的和未请求的html,javascrip代码一起发送给客户端,然后客户端自己根据用户操作造成的url变化,自己去发送的代码里找相应的,然后自己刷新。这个功能就是前端路由器。

形象一点说,你有很多本书,太多了,所以你请了个人专门帮你保管,然后你学习的时候,需要查阅资料就直接去找他拿。频率太快了这个人觉得烦,干脆把全部书都拿给你,自己要那本自己找。这个自己拿的过程就是前端路由。