any大家也许经常使用,毕竟如果只是简单开发一个前端页面的话其实typescript本身是用的不多的。
但关于unknow可能都有所耳闻但却没有深入了解过,但又怕在面试中用到。
接下来介绍一下他们的相同点与不同点:
相同点:any和unknow可以是任何类的父类。
不同点1:any也可以是任何类的子类,但unknow不可以,所以any类型的变量都可以赋值给其他类型的变量
不同点2:不能拿unknow类型的变量来获取任何属性和方法,但any类型的变量可以获取任意名称的属性和任意名称的方法(虽然不推荐)。
相信大家看完可能会对变量中的父子类定义会有所疑惑,接下来做一下解释:
首先,大家可以想象一下如果父级一个更大的圈,而子级是一个更小的圈并且包含在父级之内,那么是不意味着子级内的所有数都合法,那么到了变量这一领域,如果一个变量a赋值给另一个变量b也就意味着a在b的圈内,b可以是a的父级,那么any与unknow是所有类的父类就意味着所有类可以赋值给他们两
关于unknow的常用用法:
function fn(n:unknow){}
用来接收任意类型的变量实参,但在函数内部只用于再次传递或输出结果,不获取属性的场景