浅谈typeof 在ts中和js中的区别

621 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第21天,点击查看活动详情

前言

最近最常用的就是typeScript,typeScript是强类型, 它提供了一套静态检测机制,如何我们编码事中途变换变量的类型,ts就会在报错,帮助我们在编码时发现错误。

在这两个里面都有typeOf,但是作用用法却大有不同。下面我将分享typeOf在ts中和js中的区别,希望对大家有帮助,欢迎讨论指出问题!

1.js中的typeof

js中提供了typeof方法,用来在js中获取数据的类型。一般用于判断基本类型除外null, typeof 也可以判断 function函数,但判断 不了Array数组,因为typeof判断数组返回的是Object类型。

1.typeof用来判断数据类型返回结果:

基本数据类型:string,number,boolean,undefined

引用数据类型:object (不管是什么引用类型就返回object),function

2.typeof判断变量是否存在

typeof a!="undefined"

 let s;
 function fun() {
  let text=1; 
 }
 
 typeof "123"  //返回类型:string
 typeof 123    //返回类型:number
 typeof true   //返回类型:boolean
 typeof a      //返回类型:undefined
 typeof s      //返回类型:undefined
 typeof fun    //返回类型:function
 typeof [1]    //返回类型:object
 typeof {}     //返回类型:object

2.ts中的typeof

ts中的typeof不仅可以获取数据的类型,还可以在类型上下文中引用变量和属性的类型(类型查询),只能查询变量,不能查询函数调用的。

1.使用场景:ts中的typeof可以根据已有的值在函数中有默认变量的值,获取该值的类型,简化类型书写

示例如下:

1.类型上下文指的哪里? 指的是冒号后面的 部分

let p = { x: 1, y: 2 }
function add(point: { x: number; y: number }) {}
add(p)


简化写法如下:

 let p = { x: 1, y: 2 }
 function add(point: typeof p) {}
 add(p)

结束语

希望大家能够喜欢我的文章,我真的很用心在写,也希望通过文章认识更多志同道合的朋友。

最后伙伴们,如果喜欢我的可以给点一个小小的赞👍或者关注➕都是对我最大的支持。