在 JavaScript 中,进行精确的类型检查通常涉及使用 typeof 运算符和 instanceof 关键字。以下是一些实用的函数和方法,用于进行精确的类型检验:

  1. 使用 typeof 检查原始类型(例如: string , number , boolean )。
  2. 使用 instanceof 检查对象的类型,特别是检查某个实例是否是构造函数的实例。
  3. 使用 Array.isArray() 检查数组类型。
  4. 使用 typeofObject.prototype.toString.call() 结合,检查复杂类型(例如: function , object , symbol , bigint )。

下面是一些示例代码:

function isString(value) {
  return typeof value === 'string';
}
 
function isNumber(value) {
  return typeof value === 'number';
}
 
function isBoolean(value) {
  return typeof value === 'boolean';
}
 
function isFunction(value) {
  return typeof value === 'function';
}
 
function isObject(value) {
  return typeof value === 'object' && value !== null;
}
 
function isArray(value) {
  return Array.isArray(value);
}
 
function isDate(value) {
  return value instanceof Date;
}
 
function isRegExp(value) {
  return value instanceof RegExp;
}
 
function isPrimitive(value, type) {
  switch (type) {
    case 'string': return isString(value);
    case 'number': return isNumber(value);
    case 'boolean': return isBoolean(value);
    default: return false;
  }
}
 
function isComplexType(value) {
  return typeof value === 'object' && value !== null || typeof value === 'function';
}
 
function getType(value) {
  const type = Object.prototype.toString.call(value);
  return type.substring(8, type.length - 1);
}
 
// 使用示例
console.log(isString('hello')); // true
console.log(isNumber(123)); // true
console.log(isBoolean(true)); // true
console.log(isFunction(function() {})); // true
console.log(isObject({})); // true
console.log(isArray([])); // true
console.log(isDate(new Date())); // true
console.log(isRegExp(/regexp/)); // true
console.log(isPrimitive('test', 'string')); // true
console.log(getType(123n)); // "BigInt"
console.log(getType(Symbol('sym'))); // "Symbol"

这些函数可以帮助你精确地检查 JavaScript 中的变量类型。 isPrimitive 用于检查原始类型, getType 用于获取更多种类的类型信息。这些方法可以根据需要进行扩展,以适应更多的特殊情况和复杂类型检查。