类型检测
提供类型检测
安装
- npm
- yarn
- pnpm
npm install a-type-of-js --save
yarn add a-type-of-js
pnpm add a-type-of-js --save
使用
import { typeOf } from 'a-type-of-js';
const num = 1;
if (typeOf(num) === 'number') {
console.log('num is number');
} else {
console.log('num is not number');
}
使用 ts
中的 is 类型判断来进行类型安全收缩
import { isString, isNumber } from 'a-type-of-js';
function doSomething(value: string | number) {
if (isString(value)) {
value.toLocaleUpperCase();
} else if (isNumber(value)) {
value.toFixed(2);
}
}
doSomething('hello'); // HELLO
doSomething(1); // 1.00
向 as
说 'no'
注意
使用 isType
的成本往往比仅使用 typeof
的成本高。尽然对于对象类型的数据其功能类似于 as
import { isType } from 'a-type-of-js';
interface Person {
name: string;
age: number;
}
function doSomething(value: string | number | boolean | ) {
/// use judgment as a type judgment
if (isType<Person>(value, () => (value && value.name === 'earthnut' && value.age === 18))) {
console.log('value is Person');
return;
}
/// as tisType
if (isType<string>(value)) {
value.toLocaleUpperCase();
return;
}
/// use judgment
if (isType<boolean>(value, Boolean(value) === true )) {
console.log('value is true');
return;
}
}
文档提供类型检测
isString
字符串、String
对象构建的字符串isEmptyString
空字符串isBusinessEmptyString
空字符串(去除首尾空格)isNumber
数字、Number
对象构建的数字isBoolean
布尔值、Boolean
对象构建的布尔值isTrue
是否为 trueisFalse
是否为 falseisNull
nullisUndefined
undefinedisNaN
NaN
(NaN
是一个特殊的数值NaN !== NaN
即便typeof NaN
返回的是number
)isFunction
函数isArray
数组、Array
对象构建的数组isEmptyArray
是否是空数组isSymbol
symbolisBigInt
大整数isPlainObject
对象(普通对象,非其他内置对象类型)isEmptyObject
是否为空对象(没有私有键的对象)isPromise
PromiseisAsyncFunction
异步函数isDate
时间isMap
MapisSet
SetisWeakMap
WeakMapisWeakSet
WeakSetisGenerator
生成器isGeneratorFunction
生成器函数isBigInt64Array
BigInt64ArrayisBigUint64Array
BigUint64ArrayisDataView
DataViewisArrayBuffer
ArrayBufferisRegExp
正则、RegExp
对象构建的正则isSharedArrayBuffer
SharedArrayBufferisUint8ClampedArray
Uint8ClampedArrayisInt8Array
Int8ArrayisUint8Array
Uint8ArrayisTypedArray
TypedArrayisInt16Array
Int16ArrayisUint16Array
Uint16ArrayisInt32Array
Int32ArrayisUint32Array
Uint32ArrayisFloat32Array
Float32ArrayisFloat64Array
Float64ArrayisIntlCollator
Intl.CollatorisIntlDateTimeFormat
Intl.DateTimeFormatisIntlDisplayNames
Intl.DisplayNamesisIntlListFormat
Intl.ListFormatisIntlLocale
Intl.LocaleisIntlNumberFormat
Intl.NumberFormatisError
错误isEvalError
eval 错误isRangeError
range 错误isReferenceError
reference 错误isSyntaxError
syntax 错误isTypeError
type 错误isURIError
uri 错误isAggregateError
aggregate 错误
提示
isEmptyArray
返回在 ts 下仅判断且返回的是布尔值,而非像其他方法返回的是类型的断言
/** 定义一个数组 */
const arr: string[] = [];
if (isEmptyArray(arr)) {
console.log('数组为空');
throw new Error('数组为空');
}
arr.shift(); // 此刻是安全的