Methods
assign(obj, key, value) → {object|array}
assign a property's value by its keyPath
Parameters:
Name |
Type |
Description |
obj |
object
|
array
|
|
key |
KeyPath
|
|
value |
any
|
|
Returns:
-
Type
-
object
|
array
async_(fn, expireopt) → {function}
Create a function which return a Promise and cached by parameters.
Parameters:
Name |
Type |
Attributes |
Description |
fn |
function
|
|
a function, can be async function or normal function |
expire |
number
|
<optional>
|
the expire time for releasing cache |
Example
const fn = async_(async () => {})
const a = fn()
const b = fn()
a === b // the same Promise
calculate(exp, decimalopt) → {string}
Parameters:
Name |
Type |
Attributes |
Description |
exp |
string
|
|
|
decimal |
number
|
<optional>
|
|
caseby(entries)
get value by different conditions
Parameters:
Name |
Type |
Description |
entries |
Array.<function(), function()>
|
[[condition, getter]] |
clearNum00(input) → {string}
Parameters:
Name |
Type |
Description |
input |
number
|
string
|
|
clone(obj) → {T}
Parameters:
Name |
Type |
Description |
obj |
T
|
|
compareby(a, b) → {number}
Parameters:
Name |
Type |
Description |
a |
number
|
string
|
|
b |
number
|
string
|
|
compArray(a, b) → {Array.<any>}
Parameters:
Name |
Type |
Description |
a |
Array.<any>
|
|
b |
Array.<any>
|
|
Returns:
-
Type
-
Array.<any>
compute_(fn, expireopt) → {function}
Create a function which cache result by parameters.
Parameters:
Name |
Type |
Attributes |
Description |
fn |
function
|
|
the original function to calculate result |
expire |
number
|
<optional>
|
the time to expire cache, if set 0 (or not set), the cache will never be expired, default 0. |
Returns:
you can call a .clear() method on this function to clear the cache
-
Type
-
function
Example
const compute = compute_((x, y) => {
return x + y
})
// the following two computing will call original fn only once
const a = compute(1, 3)
const b = compute(1, 3)
compute.clear() // clear all cache
createArray(value, countopt) → {Array.<T>}
Parameters:
Name |
Type |
Attributes |
Description |
value |
T
|
|
|
count |
number
|
<optional>
|
|
createDate(datetime, givenFormatteropt) → {Date}
Parameters:
Name |
Type |
Attributes |
Description |
datetime |
Date
|
string
|
number
|
|
|
givenFormatter |
string
|
<optional>
|
|
createProxy(origin, options) → {any}
create a proxy object.
it will change your original data
Parameters:
Name |
Type |
Description |
origin |
object
|
array
|
|
options |
object
|
Properties
Name |
Type |
Description |
get |
function
|
to modify output value of each node, receive (keyPath, proxiedValue), proxiedValue is a reactive object/array as if, keyPath is an array which catains keys in path |
set |
function
|
to modify input value of each node, receive (keyPath, nextValue), nextValue is the given passed value, the return value will be transformed to be reactive object/array as if |
dispatch |
function
|
to notify change with keyPath, receive (keypath, next, prev), it will be called after value is set into |
writable |
function
|
whether be able to change value, return false to disable writable, default is true |
|
Example
const some = {
body: {
hand: true,
foot: true,
},
}
const a = createProxy(some, {
get(keyPath, value) {
if (keyPath.join('.') === 'body.hand') {
return value.toString()
}
else {
return value
}
},
set(keyPath, value) {},
dispatch(keyPath, next, current) {},
})
a !== some // proxy object !== object
a.body !== some.body // proxy object !== object
a.body.hand !== some.body.hand // true !== 'true'
a.body.foot == some.body.foot // true == true
a.body.hand = false // now a.body.hand is 'false', a string
some.body.hand === false // some.body.hand changes to false
createRandomString(len, charSetopt) → {string}
Parameters:
Name |
Type |
Attributes |
Description |
len |
number
|
|
|
charSet |
10
|
36
|
62
|
<optional>
|
10: 0-9, 36: 0-9a-z, 62: 0-9a-zA-Z. default is 62 |
createReactive(origin, options) → {object|array}
create a reactive object.
it will change your original data
Parameters:
Name |
Type |
Description |
origin |
object
|
array
|
|
options |
object
|
Properties
Name |
Type |
Description |
get |
function
|
to modify output value of each node, receive (keyPath, reactiveValue), reactiveValue is a reactive object/array as if, keyPath is an array which catains keys in path |
set |
function
|
to modify input value of each node, receive (keyPath, nextValue), nextValue is the given passed value, the return value will be transformed to be reactive object/array as if |
dispatch |
function
|
to notify change with keyPath, receive (keypath, next, prev), it will be called after value is set into |
writable |
function
|
whether be able to change value, return false to disable writable, default is true |
disable |
function
|
return true to disable create nest reactive on this node |
|
Returns:
-
Type
-
object
|
array
Example
const some = {
body: {
hand: true,
foot: true,
},
}
const a = createReactive(some, {
get(keyPath, value) {
if (keyPath.join('.') === 'body.hand') {
return value.toString()
}
else {
return value
}
},
set(keyPath, value) {},
dispatch({
keyPath,
value, // receive value
input, // getter output
next, // created reactive
prev, // current reactive
}, force) {},
})
a !== some // reactive object !== object
a.body !== some.body // reactive object !== object
a.body.hand !== some.body.hand // true !== 'true'
a.body.foot == some.body.foot // true == true
a.body.hand = false // now a.body.hand is 'false', a string
some.body.hand === false // original data changed
createSafeExp(exp) → {string}
Parameters:
Name |
Type |
Description |
exp |
string
|
|
debounce(fn, wait, immediateopt) → {function}
Parameters:
Name |
Type |
Attributes |
Description |
fn |
function
|
|
|
wait |
number
|
|
|
immediate |
boolean
|
<optional>
|
是否立即执行函数 |
decideby(decide, …args)
get value by using a function
Parameters:
Name |
Type |
Attributes |
Description |
decide |
function
|
|
|
args |
any
|
<repeatable>
|
|
define(obj, key, descriptor) → {object}
Parameters:
Name |
Type |
Description |
obj |
object
|
|
key |
string
|
|
descriptor |
object
|
function
|
|
diffArray(a, b) → {Array.<any>}
Parameters:
Name |
Type |
Description |
a |
Array.<any>
|
|
b |
Array.<any>
|
|
Returns:
-
Type
-
Array.<any>
divideby(a, b, decimalopt) → {string}
Parameters:
Name |
Type |
Attributes |
Description |
a |
number
|
string
|
|
|
b |
number
|
string
|
|
|
decimal |
number
|
<optional>
|
decimal length |
each(obj, fn, descriptoropt) → {object|array}
Parameters:
Name |
Type |
Attributes |
Description |
obj |
object
|
array
|
|
|
fn |
function
|
|
|
descriptor |
boolean
|
<optional>
|
|
Returns:
-
Type
-
object
|
array
enumerify(input) → {string}
Parameters:
Name |
Type |
Description |
input |
number
|
string
|
|
extend(obj1, obj2, mixArropt) → {object}
Parameters:
Name |
Type |
Attributes |
Description |
obj1 |
object
|
|
|
obj2 |
object
|
|
|
mixArr |
0
|
1
|
2
|
<optional>
|
0: extend array as object, 1: push into array, 2: replace all items |
Parameters:
Name |
Type |
Description |
obj |
object
|
|
keys |
Array.<string>
|
|
filter(obj, fn) → {object}
Parameters:
Name |
Type |
Description |
obj |
object
|
array
|
|
fn |
function
|
|
find(obj, fn) → {string}
在对象中查找,fn返回true表示找到,返回false表示没有找到继续找,找到后返回该属性的key,通过key就可以方便的获取value
Parameters:
Name |
Type |
Description |
obj |
object
|
array
|
|
fn |
function
|
|
fixNum(input, decimalopt, padopt, flooropt) → {string}
Parameters:
Name |
Type |
Attributes |
Description |
input |
number
|
string
|
|
|
decimal |
number
|
<optional>
|
|
pad |
boolean
|
<optional>
|
|
floor |
boolean
|
<optional>
|
|
flat(obj, determineopt) → {object}
Parameters:
Name |
Type |
Attributes |
Description |
obj |
object
|
array
|
|
|
determine |
function
|
<optional>
|
|
flatArray(arr) → {Array.<any>}
Parameters:
Name |
Type |
Description |
arr |
Array.<Array.<any>>
|
|
Returns:
-
Type
-
Array.<any>
Parameters:
Name |
Type |
Attributes |
Description |
datetime |
Date
|
string
|
number
|
|
|
formatter |
string
|
|
|
givenFormatter |
string
|
<optional>
|
|
Parameters:
Name |
Type |
Attributes |
Description |
input |
number
|
string
|
|
|
separator |
string
|
|
|
count |
number
|
|
|
formatdecimal |
boolean
|
<optional>
|
|
Parameters:
Name |
Type |
Attributes |
Description |
input |
number
|
string
|
|
|
formatdecimal |
boolean
|
<optional>
|
|
Parameters:
Name |
Type |
Attributes |
Description |
input |
string
|
|
|
separator |
string
|
|
|
segments |
array
|
|
|
alignright |
boolean
|
<optional>
|
|
freeze(o) → {object}
Parameters:
Name |
Type |
Description |
o |
object
|
|
fromEntries(entries, kv) → {object}
conver an entry/key-value array to an object
Parameters:
Name |
Type |
Description |
entries |
Array.<array>
|
Array.<object>
|
|
kv |
boolean
|
|
get_(fn, typeopt) → {function}
create a getter function which will cache the result, cache will be released automaticly
Parameters:
Name |
Type |
Attributes |
Description |
fn |
function
|
|
the getter function, notice, without parameters |
type |
number
|
<optional>
|
the type of automatic releasing, default 1.
- 0: never released
- 1: in Promise microtask
- 2: in timeout task
- 3: in requestAnimationFrame
- 4: in requestIdleCallback
|
Returns:
you can call .clear() to clear cache immediately
-
Type
-
function
Example
const get = get_(() => {
return Math.random()
})
// the following two getting will call original fn only once
const a = get()
const b = get()
a === b
// type: 1
const getter = get_(() => Date.now(), 1)
const e = getter()
Promise.then(() => {
const h = getter()
e !== h // cache is released in a previous Promise microtask
})
setTimeout(() => {
const f = getter()
e !== f // when type is 1, the cache will be release in a Promise microtask, so when we call setTimeout, cache is gone
})
// type: 2
const use = get_(() => Date.now(), 2)
const m = use()
Promise.then(() => {
const n = use()
m === n // when type is 2, the cache will be release in a setTimeout task, so when we call in a Promise.then, cache is existing
})
setTimeout(() => {
const l = use()
m !== l // cache was released in a previous setTimeout task
})
getConstructorOf(ins) → {any}
Parameters:
Name |
Type |
Description |
ins |
any
|
|
getObjectHash(obj) → {number}
Parameters:
Name |
Type |
Description |
obj |
object
|
|
getStringHash(str) → {number}
Parameters:
Name |
Type |
Description |
str |
string
|
|
getSymbolContent(symb) → {string}
get the string of a symbol
Parameters:
Name |
Type |
Description |
symb |
symbol
|
|
groupArray(arr, count) → {Array.<array>}
slice an array into [count] sub-array
Parameters:
Name |
Type |
Description |
arr |
Array.<any>
|
|
count |
number
|
|
Returns:
-
Type
-
Array.<array>
hasOwnKey(obj, key, enumerableopt) → {boolean}
check wether a property is the given object's own property,
as default, it will check:
- both string and symbol properties (different from inObject),
- both enumerable and non-enumerable properties;
Parameters:
Name |
Type |
Attributes |
Description |
obj |
object
|
array
|
|
|
key |
string
|
|
|
enumerable |
boolean
|
<optional>
|
|
inArray(item, arr) → {boolean}
Parameters:
Name |
Type |
Description |
item |
any
|
|
arr |
array
|
|
inherit(Parent, proptotypes, statics) → {any}
Create a new Child any which is inherited from Parent any
Parameters:
Name |
Type |
Description |
Parent |
any
|
|
proptotypes |
object
|
|
statics |
object
|
|
inObject(key, obj, ownopt) → {boolean}
check wether a property is the given object's own property,
it will check:
- only string properties (except symbol properties, different from hasOwnKey),
- only enumerable properties;
Parameters:
Name |
Type |
Attributes |
Description |
key |
string
|
|
|
obj |
object
|
|
|
own |
boolean
|
<optional>
|
use hasOwnKey to check |
interArray(a, b) → {Array.<any>}
Parameters:
Name |
Type |
Description |
a |
Array.<any>
|
|
b |
Array.<any>
|
|
Returns:
-
Type
-
Array.<any>
interpolate(template, data, optsopt) → {string}
Parameters:
Name |
Type |
Attributes |
Description |
template |
string
|
|
|
data |
object
|
|
|
opts |
object
|
<optional>
|
|
invoke_(fn, countopt, expireopt) → {function}
create a function whose result will be cached, and the cache will be released by invoke count
Parameters:
Name |
Type |
Attributes |
Description |
fn |
function
|
|
|
count |
number
|
<optional>
|
|
expire |
number
|
<optional>
|
the expire time after latest invoke |
Example
const invoke = invoke_(() => {
return Math.random()
}, 2)
const a = invoke()
const b = invoke()
const c = invoke()
a === b
a !== c
isAllInArray(items, arr) → {boolean}
is all items in array arr
Parameters:
Name |
Type |
Description |
items |
Array.<any>
|
|
arr |
Array.<any>
|
|
isArray(value) → {boolean}
Parameters:
Name |
Type |
Description |
value |
any
|
|
isArrayInArray(shortArr, longArr) → {boolean}
all items in shortArr are in longArr
may be the same with isAllInArray
Parameters:
Name |
Type |
Description |
shortArr |
*
|
|
longArr |
*
|
|
isBlob(value) → {boolean}
Parameters:
Name |
Type |
Description |
value |
any
|
|
isBoolean(value) → {boolean}
Parameters:
Name |
Type |
Description |
value |
any
|
|
isConstructor(f, strictopt) → {boolean}
judge whether a value is a Constructor
Parameters:
Name |
Type |
Attributes |
Description |
f |
any
|
|
|
strict |
number
|
<optional>
|
strict level
- 4: should must be one of native code, native class
- 3: can be babel transformed class
- 2: can be some function whose prototype has more than one properties
- 1: can be some function which has this inside
- 0: can be some function which has prototype
|
isDate(value) → {boolean}
Parameters:
Name |
Type |
Description |
value |
any
|
|
isEmpty(value) → {boolean}
Parameters:
Name |
Type |
Description |
value |
any
|
|
isEqual(val1, val2) → {boolean}
Parameters:
Name |
Type |
Description |
val1 |
any
|
|
val2 |
any
|
|
isFalsy(value) → {boolean}
Parameters:
Name |
Type |
Description |
value |
any
|
|
isFile(value) → {boolean}
Parameters:
Name |
Type |
Description |
value |
any
|
|
isFinite(value) → {boolean}
Parameters:
Name |
Type |
Description |
value |
any
|
|
Parameters:
Name |
Type |
Description |
value |
any
|
|
isFunction(value, isStrictopt) → {boolean}
Parameters:
Name |
Type |
Attributes |
Description |
value |
any
|
|
|
isStrict |
boolean
|
<optional>
|
where Constructor is to return false |
isGt(a, b) → {boolean}
Parameters:
Name |
Type |
Description |
a |
any
|
|
b |
any
|
|
isGte(a, b) → {boolean}
Parameters:
Name |
Type |
Description |
a |
any
|
|
b |
any
|
|
isInfinite(value) → {boolean}
Parameters:
Name |
Type |
Description |
value |
any
|
|
isInheritedOf(SubConstructor, Constructor, isStrictopt) → {boolean}
Parameters:
Name |
Type |
Attributes |
Description |
SubConstructor |
any
|
|
|
Constructor |
any
|
|
|
isStrict |
boolean
|
<optional>
|
|
isInstanceOf(value, Constructor, isStrictopt) → {boolean}
Parameters:
Name |
Type |
Attributes |
Description |
value |
any
|
|
|
Constructor |
any
|
|
|
isStrict |
boolean
|
<optional>
|
|
isLt(a, b) → {boolean}
Parameters:
Name |
Type |
Description |
a |
any
|
|
b |
any
|
|
isLte(a, b) → {boolean}
Parameters:
Name |
Type |
Description |
a |
any
|
|
b |
any
|
|
isNaN(value) → {boolean}
Parameters:
Name |
Type |
Description |
value |
any
|
|
isNone(value) → {boolean}
Parameters:
Name |
Type |
Description |
value |
any
|
|
isNull(value) → {boolean}
Parameters:
Name |
Type |
Description |
value |
any
|
|
isNullish(value) → {boolean}
Parameters:
Name |
Type |
Description |
value |
any
|
|
isNumber(value) → {boolean}
Parameters:
Name |
Type |
Description |
value |
any
|
|
isNumeric(value) → {boolean}
Parameters:
Name |
Type |
Description |
value |
any
|
|
isObject(value) → {boolean}
Parameters:
Name |
Type |
Description |
value |
any
|
|
isOneInArray(items, arr) → {boolean}
is one of items in array arr
Parameters:
Name |
Type |
Description |
items |
Array.<any>
|
|
arr |
Array.<any>
|
|
isPromise(value) → {boolean}
Parameters:
Name |
Type |
Description |
value |
any
|
|
isProxy(value) → {boolean}
determine whether an object is a Proxy
Parameters:
Name |
Type |
Description |
value |
any
|
|
isShallowEqual(objA, objB, deepthopt) → {boolean}
Parameters:
Name |
Type |
Attributes |
Description |
objA |
object
|
|
|
objB |
object
|
|
|
deepth |
number
|
<optional>
|
how many deepth to check |
isString(value) → {boolean}
Parameters:
Name |
Type |
Description |
value |
any
|
|
isSymbol(value) → {boolean}
Parameters:
Name |
Type |
Description |
value |
any
|
|
isTruthy(value) → {boolean}
Parameters:
Name |
Type |
Description |
value |
any
|
|
isUndefined(value) → {boolean}
Parameters:
Name |
Type |
Description |
value |
any
|
|
iterate(obj, fn)
Parameters:
Name |
Type |
Description |
obj |
object
|
array
|
|
fn |
function
|
|
joinArray(arr, join) → {Array.<any>}
Parameters:
Name |
Type |
Description |
arr |
Array.<Array.<any>>
|
|
join |
any
|
|
Returns:
-
Type
-
Array.<any>
keyin(key, obj, enumerableopt) → {boolean}
check whether a keyPath is in the given object,
both string and symbol properties will be checked,
as default, it will check:
- both enumerable and non-enumerable properties;
- both own and prototype-chain properties;
if enumerable=true, it will check:
- only enumerable properties;
- only own properties;
Parameters:
Name |
Type |
Attributes |
Description |
key |
KeyPath
|
|
|
obj |
*
|
|
|
enumerable |
*
|
<optional>
|
|
makeKey(keyPath) → {string}
convert a keyPath array or string to be a keyPath string
Parameters:
Name |
Type |
Description |
keyPath |
KeyPath
|
|
makeKeyChain(path, isStrictopt) → {array}
convert a keyPath string to be an array
Parameters:
Name |
Type |
Attributes |
Description |
path |
string
|
|
|
isStrict |
boolean
|
<optional>
|
whether to keep square bracket keys |
makeKeyPath(chain, isStrictopt) → {string}
convert an array to be a keyPath string
Parameters:
Name |
Type |
Attributes |
Description |
chain |
array
|
|
the array for path, without any symbol in it |
isStrict |
boolean
|
<optional>
|
wether to use [] to wrap number key |
map(obj, fn) → {object}
Parameters:
Name |
Type |
Description |
obj |
object
|
array
|
|
fn |
function
|
|
matchAll(regexp, str) → {array}
Parameters:
Name |
Type |
Description |
regexp |
RegExp
|
|
str |
string
|
|
merge(obj1, obj2, mixArropt) → {object}
Parameters:
Name |
Type |
Attributes |
Description |
obj1 |
object
|
|
|
obj2 |
object
|
|
|
mixArr |
0
|
1
|
2
|
<optional>
|
0: extend array as object, 1: push into array, 2: replace all items |
minusby(a, b) → {string}
Parameters:
Name |
Type |
Description |
a |
number
|
string
|
|
b |
number
|
string
|
|
mixin(Source, Extend)
mix Extend into Source, (notice: will override Source)
Parameters:
Name |
Type |
Description |
Source |
any
|
|
Extend |
any
|
|
|
any
|
|
multiplyby(a, b) → {string}
Parameters:
Name |
Type |
Description |
a |
number
|
string
|
|
b |
number
|
string
|
|
num10To(num, base) → {string}
convert base10 number to string
Parameters:
Name |
Type |
Description |
num |
number
|
|
base |
number
|
|
num10to36(num) → {string}
Parameters:
Name |
Type |
Description |
num |
number
|
string
|
|
num10to62(num) → {string}
Parameters:
Name |
Type |
Description |
num |
number
|
string
|
|
num36to10(code) → {number}
Parameters:
Name |
Type |
Description |
code |
string
|
|
num62to10(code) → {number}
Parameters:
Name |
Type |
Description |
code |
string
|
|
numerify(num) → {string}
Parameters:
Name |
Type |
Description |
num |
number
|
string
|
|
numTo10(code, base) → {number}
convert string to base10 number
Parameters:
Name |
Type |
Description |
code |
string
|
|
base |
number
|
|
padLeft(str, len, pad) → {string}
Parameters:
Name |
Type |
Description |
str |
string
|
|
len |
number
|
|
pad |
string
|
|
padRight(str, len, pad) → {string}
Parameters:
Name |
Type |
Description |
str |
string
|
|
len |
number
|
|
pad |
string
|
|
parse(obj, key)
parse a property's value by its keyPath
Parameters:
Name |
Type |
Description |
obj |
object
|
array
|
|
key |
KeyPath
|
|
parseAs(obj, key)
parse a property into a new object which contains only the parsed property
Parameters:
Name |
Type |
Description |
obj |
object
|
array
|
|
key |
KeyPath
|
|
Example
var a = { a: 1, b: 2, c: 3 };
var b = parseAs(a, 'b'); // -> { b: 2 }
pick(obj, keys) → {object}
Parameters:
Name |
Type |
Description |
obj |
object
|
|
keys |
Array.<string>
|
|
pipe_(…fns) → {function}
Parameters:
Name |
Type |
Attributes |
Description |
fns |
function
|
<repeatable>
|
|
Example
const pipe = pipe_(
x => x + 1,
x => x - 1,
x => x * x,
x => x / x,
)
const y = pipe(10) // 10
plusby(a, b) → {string}
Parameters:
Name |
Type |
Description |
a |
number
|
string
|
|
b |
number
|
string
|
|
refineProxy(obj) → {any}
refine the original value from a Proxy
Parameters:
Name |
Type |
Description |
obj |
object
|
|
remove(obj, key) → {object|array}
remove a property by its keyPath
Parameters:
Name |
Type |
Description |
obj |
object
|
array
|
|
key |
KeyPath
|
|
Returns:
-
Type
-
object
|
array
search(obj, fn) → {any}
Parameters:
Name |
Type |
Description |
obj |
object
|
array
|
|
fn |
function
|
|
sortArray(items, byopt, decsopt) → {Array.<any>}
Parameters:
Name |
Type |
Attributes |
Description |
items |
Array.<any>
|
|
|
by |
string
|
<optional>
|
which property sort by |
decs |
boolean
|
<optional>
|
|
Returns:
-
Type
-
Array.<any>
splitArray(arr, splitter) → {Array.<array>}
Parameters:
Name |
Type |
Description |
arr |
Array.<any>
|
|
splitter |
*
|
function
|
|
Returns:
-
Type
-
Array.<array>
stringify(obj) → {string}
Parameters:
Name |
Type |
Description |
obj |
object
|
|
throttle(fn, wait, immediateopt) → {function}
Parameters:
Name |
Type |
Attributes |
Description |
fn |
function
|
|
|
wait |
number
|
|
|
immediate |
boolean
|
<optional>
|
是否立即执行 |
toArray(arr) → {Array.<any>}
Parameters:
Name |
Type |
Description |
arr |
any
|
|
Returns:
-
Type
-
Array.<any>
toEntries(obj) → {Array.<array>}
convert an object to an entry array
Parameters:
Name |
Type |
Description |
obj |
object
|
|
Returns:
-
Type
-
Array.<array>
unionArray(a, b) → {Array.<any>}
Parameters:
Name |
Type |
Description |
a |
Array.<any>
|
|
b |
Array.<any>
|
|
Returns:
-
Type
-
Array.<any>
uniqueArray(arr, propopt) → {Array.<any>}
Parameters:
Name |
Type |
Attributes |
Description |
arr |
Array.<any>
|
|
|
prop |
string
|
<optional>
|
unique by which property |
Returns:
-
Type
-
Array.<any>
Type Definitions
KeyPath
Type:
-
string
|
number
|
Array.<(string|symbol|number)>