TypeScript判断对象类型的四种方式

这篇具有很好参考价值的文章主要介绍了TypeScript判断对象类型的四种方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、typeof

typeof "";  //string
typeof 1;   //number
typeof false; //boolean
typeof undefined; //undefined
typeof function(){}; //function
typeof {}; //object
typeof Symbol(); //symbol
typeof null; //object
typeof []; //object
typeof new Date(); //object
typeof new RegExp(); //object

二、instanceof

{} instanceof Object; //true
[] instanceof Array;  //true
[] instanceof Object; //true
"123" instanceof String; //falsenew String(123) instanceof String; //true

三、constructor

function instance(left,right){
    let prototype = right.prototype;  //获取类型的原型
    let proto = left.__proto__;       //获取对象的原型
    while(true){    //循环判断对象的原型是否等于类型的原型,直到对象原型为null,因为原型链最终为null
       if (proto === null || proto === undefined){
           return false;
       }
       if (proto === prototype){
           return true;
       }
       proto = proto.__proto__;
     }
}
console.log(instance({},Object)); //true
console.log(instance([],Number)); //false

四、Object.prototype.toString()

function getType(obj){
  let type  = typeof obj;
  if(type != "object"){
    return type;
  }
  return Object.prototype.toString.call(obj).replace(/^\[object (\S+)\]$/, '$1');
}

使用案例:

<!--src/App.vue-->
<script setup lang="ts">

const vFocus = {
  mounted: (el: HTMLElement, binding: any) => {
    // 指令绑定的元素
    console.log(typeof el);
    console.log(el);
    // 指令绑定的参数
    console.log(binding)

    // 如果是输入框
    if (el instanceof HTMLInputElement) {
      // 元素聚焦
      el.focus();
      el.placeholder = '请输入';
      el.value = '勤奋、努力'
    }else if (el instanceof HTMLAnchorElement) {
      // 如果是<a>标签我们就导向 百度翻译
      el.href='https://fanyi.baidu.com/'
    }
  }
}
</script>

<template>
  <input v-focus/>
  <p/>
  <a v-focus href="https://www.baidu.com/">百度一下,你就知道</a>
</template>

typescript 判断类型,vue,typescript,javascript,前端

 文章来源地址https://www.toymoban.com/news/detail-540395.html

到了这里,关于TypeScript判断对象类型的四种方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • TypeScript中的对象类型(可选属性 只读属性 交叉类型)

    一、定义对象类型 在TypeScript中定义对象类型有以下三种方式: 1. 匿名对象类型 匿名对象类型是在定义变量时直接使用花括号{},来定义一个对象类型。例如: 上述代码中定义了一个person变量,它的类型为对象,它有两个属性:name和age,其中name属性的类型为字符串,age属性

    2024年02月11日
    浏览(35)
  • TypeScript类型系统:强类型的优势和使用方式

    在上一篇文章《TypeScript入门指南:从JS到TS的转变》 中,已经向大家说明了 TypeScript 是一种静态类型的编程语言,它的 类型系统 是它的重要特性之一。TypeScript 的类型系统可以提供一些强大的优势,可以帮助开发人员编写 更健壮 、 更可维护 和 更易于理解 的代码。 从这一

    2024年02月09日
    浏览(31)
  • TypeScript入门指南:特性、安装配置、类型声明、编译选项、面向对象等详解

    了解TypeScript的特性、安装配置步骤、类型声明方式、编译选项及面向对象编程方法。适合初学者学习和实践。

    2024年02月12日
    浏览(40)
  • (c语言)素数判断的四种方法

    2024年02月04日
    浏览(29)
  • NAT的四种类型及类型检测

    考虑到UDP的无状态特性,目前针对其的NAT实现大致可分为Full Cone、Restricted Cone、Port Restricted Cone和Symmetric NAT四种。值得指出的是,对于TCP协议而言,一般来说,目前NAT中针对TCP的实现基本上是一致的,其间并不存在太大差异,这是因为TCP协议本身 便是面向连接的,因此无需考

    2024年02月07日
    浏览(31)
  • 检测数据类型的四种方法

    一、数据类型: 1、基本数据类型:String、Number、Boolean、Null、Undefined、Symbol 、BigInt 2、引用数据类型:Object、Array、Function、Date、RegExp 二、检测数据类型的四种方法 1.typeof检测   特点:typeof只能检测基本数据类型(除了null),不能准确的检测引用数据类型。 object、array、

    2024年02月15日
    浏览(35)
  • 【C++】C++的四种类型转换

    当等号两边的类型不同的时候、形参与实参类型不匹配的时候、返回值类型与接收返回值类型不一致时,就需要发生 类型转化 。 而类型转换又 分为隐式类型转换和显示类型转换 。 隐式类型转换是编译器在编译阶段自动进行,能转就转,不能转就编译失败。 而显示类型转换

    2023年04月09日
    浏览(40)
  • C++11的四种强制类型转换

    目录 语法格式 static_cast(静态转换) dynamic_cast(动态转换) const_cast(常量转换)  reinterpret_cast(重解释) cast-name typename (expression) 其中 cast-name 为 static_cast 、 dynamic_cast 、 const_cast  和  reinterpret_cast 之一, typename 为需要转换的目标类型,而 expression 是被强制转换的值。 1、父类到

    2024年02月11日
    浏览(38)
  • POST请求中的四种数据类型

    为什么POST请求中会出现这些数据类型呢? 不同类型的数据用对应的编码格式效率比较高 便于数据校验 灵活性比较高 设定一些标准 Content-Type 包含三个指令: media type:声明传输数据的媒体类型( MIME ); charset:声明传输数据采用的是何种字符集; boundary:数据分界符,有

    2024年02月08日
    浏览(39)
  • View 的四种 OnClick 方式

    嗨喽,大家好!今天呢,我跟大家聊一聊Android 的View 的点击事件onClick 。额,有点拗口(^_^) 。 看过我的文章的人可能会好奇,你怎么写Android的文章了啊?说起这啊,就是我的血泪史了,此处省略一万字.................... 废话不多说,让我们代码走起,风里来,雨里去,唯有代

    2023年04月15日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包