const a = 'asd'
console.log(1, typeof a)
const b = 12
console.log(2, typeof b)
const c = {a: 1, b: 2}
console.log(3, typeof c)
console.log(c instanceof Object)
console.log(({}).toString.call(c))
const e = [1, 2, 3]
console.log(4, typeof e)
console.log(e instanceof Array)
const d = () => 1 == 1
console.log(5, typeof d)
const isNum = (data: any): data is number => typeof data == 'number';
const isStr = (data: any): data is string => typeof data == 'string';
const isObject = (data: any): data is object => ({}).toString.call(data) == '[object Object]';
const isFunc = (data: any): data is Function => typeof data == 'function';
let args
if (isNum(args)) {
args.toFixed()
}
if (isStr(args)) {
args.trim()
}
if (isObject(args)) {
Object.keys(args)
}
if (isFunc(args)) {
args()
}