取出类型的values
新增于v0.0.15
脚本举例
import { $Values } from "@tomato-js/shared"
type Props = { name: string; age: number; visible: boolean };
type newProps = $Values<Props>;
//string|number|boolean
两个类型取Diff
新增于v0.0.15
脚本举例
import { Diff } from "@tomato-js/shared"
type Props = { name: string; age: number; visible: boolean };
type DefaultProps = { age: number };
type newProps = Diff<Props, DefaultProps>;
//{ name: string; visible: boolean };
获取类型中value为函数的key
新增于v0.0.15
脚本举例
import { FunctionKeys } from "@tomato-js/shared"
type MixedProps = {name: string; setName: (name: string) => void; someKeys?: string; someFn?: (...args: any) => any;};
type Keys = FunctionKeys<MixedProps>;
//"setName | someFn"
两个类型取交集
新增于v0.0.15
脚本举例
import { Intersection } from "@tomato-js/shared"
type Props = { name: string; age: number; visible: boolean };
type DefaultProps = { age: number };
type newProps = Intersection<Props, DefaultProps>;
//{ age: number };
获取类型中value不为函数的key
新增于v0.0.15
脚本举例
import { NonFunctionKeys } from "@tomato-js/shared"
type MixedProps = {name: string; setName: (name: string) => void; someKeys?: string; someFn?: (...args: any) => any;};
type Keys = NonFunctionKeys<MixedProps>;
//"name"
构建可选的新类型
新增于v0.0.15
脚本举例
import { Optional } from "@tomato-js/shared"
type Props = { req: number; reqUndef: number | undefined; opt?: string; optUndef?: number | undefined; };
type OptionalType = Optional<Props>;
//{ req?: number; reqUndef?: number | undefined; opt?: string; optUndef?: number | undefined; };
type OptionalType2 = Optional<Props,'req'|'reqUndef'>;
//{ req?: number; reqUndef?: number | undefined;};
获取可选项的key
新增于v0.0.15
脚本举例
import { OptionalKeys } from "@tomato-js/shared"
type Props = { req: number; reqUndef: number | undefined; opt?: string; optUndef?: number | undefined; };
type Keys = OptionalKeys<Props>;
//"opt" | "optUndef"
获取必填项的key
新增于v0.0.15
脚本举例
import { RequiredKeys } from "@tomato-js/shared"
type Props = { req: number; reqUndef: number | undefined; opt?: string; optUndef?: number | undefined; };
type Keys = RequiredKeys<Props>;
//"req" | "reqUndef"
中文汉字
英文字母
整数
负整数
正整数
遍历对象或数组
脚本举例
import { forEach } from '@tomato-js/shared'
const obj = {
a: 1,
b: 2
};
const obj2 = {};
const arr = [1,2,3,4,5];
forEach(obj, (k, v) => (obj2[v] = k));
forEach(obj, (k, v) => console.log(v));
需要遍历的值
执行函数
是否已定义
新增于v0.0.18
脚本举例
import { isDef } from '@tomato-js/shared'
const node = isDef(undefined);//false
需要判断的值
是否为已定义的值
是否为空对象或空数组
新增于v0.0.22
脚本举例
import { isEmpty } from '@tomato-js/shared'
const node = isEmptyArray([]);//true
const node = isEmptyArray([1]);//false
需要判断的集合
是否需要算上null或undefined,默认为true
是否为没有属性的空对象如{},数组如[],undefined,null
是否为空数组
新增于v0.0.22
脚本举例
import { isEmptyArray } from '@tomato-js/shared';
const node = isEmptyArray([]);//true
const node = isEmptyArray([1]);//false
需要判断的数组
是否为没有属性的数组比如[]
是否为空对象
脚本举例
import { isEmptyObject } from '@tomato-js/shared'
const node = isEmptyObject({});//true
需要判断的对象
是否为没有属性的空对象如{}
是否为falsy类型
脚本举例
import { isFalsy } from '@tomato-js/shared'
isFalsy(1);//false
isFalsy('');//true
需要判断的值
是否为数字或字符串数字类型
是否为 null 或 undefined 类型
脚本举例
import { isNil } from '@tomato-js/shared'
const node = isNil(undefined);//true
需要判断的值
是否为undefined或null
是否是Null
脚本举例
import { isNull } from '@tomato-js/shared'
const node = isNull(null);//true
需要判断的值
是否为null
是否为 数字或字符串数字类型
脚本举例
import { isNumberLike } from '@tomato-js/shared'
isNumberLike(‘3’);//true
isNumberLike(3);//true
需要判断的值
是否为数字或字符串数字类型
是否是undefined
脚本举例
import { isUndefined } from '@tomato-js/shared'
const node = isUndefined(undefined);//true
需要判断的值
是否为undefined
遍历对象或数组,返回新对象或数组
脚本举例
import { map } from '@tomato-js/shared'
const obj = {
a: 1,
b: 2
};
const obj2 = {};
const arr = [1,2,3,4,5];
map(obj, (k, v) => (obj2[v] = k));
map(arr, (k, v) => v=v+1);//[2,3,4,5,6]
需要遍历的值
执行函数
取反
脚本举例
import { not } from '@tomato-js/shared'
not(true)//false;
not(false)//true;
not(0)//true;
not(1)//false;
需要取反的值
取反后的值
Generated using TypeDoc
取出类型的keys
新增于v0.0.15
脚本举例
import { $Keys } from "@tomato-js/shared" type Props = { name: string; age: number; visible: boolean }; type newProps = $Keys<Props>; //'name'|'age'|'visible'