当前位置:首页 > JavaScript

js实现类型

2026-03-02 07:55:30JavaScript

JavaScript 实现类型检查的方法

JavaScript 提供了多种方式来实现类型检查,以下是一些常见的方法:

typeof 操作符 使用 typeof 操作符可以检查变量的基本类型,返回一个表示类型的字符串。例如:

typeof "hello" // "string"
typeof 42 // "number"
typeof true // "boolean"
typeof undefined // "undefined"
typeof null // "object" (历史遗留问题)
typeof {} // "object"
typeof [] // "object"
typeof function(){} // "function"

instanceof 操作符 instanceof 用于检查对象是否为某个构造函数的实例,适用于自定义对象和内置对象:

[] instanceof Array // true
new Date() instanceof Date // true
"hello" instanceof String // false (原始类型不是对象)
new String("hello") instanceof String // true

Object.prototype.toString.call() 该方法可以更精确地识别对象的具体类型,适用于内置对象和原始类型:

Object.prototype.toString.call([]) // "[object Array]"
Object.prototype.toString.call({}) // "[object Object]"
Object.prototype.toString.call(42) // "[object Number]"
Object.prototype.toString.call(null) // "[object Null]"

Array.isArray() 专门用于检查一个值是否为数组:

Array.isArray([]) // true
Array.isArray({}) // false

自定义类型检查函数 可以编写自定义函数实现更复杂的类型检查逻辑:

function isFunction(value) {
  return typeof value === "function"
}

function isPlainObject(value) {
  return value !== null && typeof value === "object" && 
    Object.prototype.toString.call(value) === "[object Object]"
}

TypeScript 的类型系统

对于更严格的类型检查,可以使用 TypeScript 的静态类型系统:

js实现类型

接口和类型别名

interface Person {
  name: string
  age: number
}

type Point = {
  x: number
  y: number
}

类型守卫

function isString(value: any): value is string {
  return typeof value === "string"
}

if (isString(input)) {
  // 在此块中,input 被推断为 string 类型
}

泛型

function identity<T>(arg: T): T {
  return arg
}

运行时类型验证库

对于更复杂的运行时类型检查,可以使用专门的库:

js实现类型

zod

import { z } from "zod"

const schema = z.object({
  username: z.string(),
  age: z.number().positive(),
})

schema.parse({ username: "john", age: 42 })

joi

const Joi = require("joi")

const schema = Joi.object({
  username: Joi.string().alphanum().min(3).max(30).required(),
  age: Joi.number().integer().min(0).max(150)
})

类型转换方法

JavaScript 也提供了一些类型转换的方法:

显式类型转换

Number("42") // 42
String(42) // "42"
Boolean(1) // true

隐式类型转换

"42" + 0 // "420" (字符串拼接)
"42" - 0 // 42 (数字减法)
!!"hello" // true (双重否定转为布尔值)

这些方法可以根据不同场景选择使用,从简单的类型检查到复杂的运行时验证都能覆盖。

标签: 类型js
分享给朋友:

相关文章

js实现

js实现

JavaScript 实现方法 JavaScript 是一种广泛使用的编程语言,适用于网页开发、服务器端编程以及移动应用开发。以下是几种常见的 JavaScript 实现方法: 网页交互功能 使用…

js实现倒计时

js实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时功能可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是几种常见的实现方式: 使用 setInterva…

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https://…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <di…