类型检测
提供类型检测
安装
- 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是否为 falseisNullnullisUndefinedundefinedisNaNNaN(NaN是一个特殊的数值NaN !== NaN即便typeof NaN返回的是number)isFunction函数isArray数组、Array对象构建的数组isEmptyArray是否是空数组isSymbolsymbolisBigInt大整数isPlainObject对象(普通对象,非其他内置对象类型)isEmptyObject是否为空对象(没有私有键的对象)isPromisePromiseisAsyncFunction异步函数isDate时间isMapMapisSetSetisWeakMapWeakMapisWeakSetWeakSetisGenerator生成器isGeneratorFunction生成器函数isBigInt64ArrayBigInt64ArrayisBigUint64ArrayBigUint64ArrayisDataViewDataViewisArrayBufferArrayBufferisRegExp正则、RegExp对象构建的正则isSharedArrayBufferSharedArrayBufferisUint8ClampedArrayUint8ClampedArrayisInt8ArrayInt8ArrayisUint8ArrayUint8ArrayisTypedArrayTypedArrayisInt16ArrayInt16ArrayisUint16ArrayUint16ArrayisInt32ArrayInt32ArrayisUint32ArrayUint32ArrayisFloat32ArrayFloat32ArrayisFloat64ArrayFloat64ArrayisIntlCollatorIntl.CollatorisIntlDateTimeFormatIntl.DateTimeFormatisIntlDisplayNamesIntl.DisplayNamesisIntlListFormatIntl.ListFormatisIntlLocaleIntl.LocaleisIntlNumberFormatIntl.NumberFormatisError错误isEvalErroreval 错误isRangeErrorrange 错误isReferenceErrorreference 错误isSyntaxErrorsyntax 错误isTypeErrortype 错误isURIErroruri 错误isAggregateErroraggregate 错误
提示
isEmptyArray 返回在 ts 下仅判断且返回的是布尔值,而非像其他方法返回的是类型的断言
/** 定义一个数组 */
const arr: string[] = [];
if (isEmptyArray(arr)) {
console.log('数组为空');
throw new Error('数组为空');
}
arr.shift(); // 此刻是安全的