satyacode
Background
Back to js-datatype-foundation

10-pincode-checker.js

JavaScript
1/**
2 * 📦 Pincode Type Checker - Type Checking
3 *
4 * India Post ka naya system bana! Har parcel mein alag alag data types
5 * aate hain. Tujhe check karna hai — yeh number hai ya string? Integer
6 * hai ya float? Valid hai ya nahi? Type checking ka masala!
7 *
8 * Methods to explore: typeof, Number.isInteger(), Number.isFinite(),
9 *   Number.isNaN(), Array.isArray(), Boolean()
10 *
11 * Functions:
12 *
13 *   1. getDataType(value)
14 *      - typeof use karo, LEKIN special cases handle karo:
15 *        - typeof null === "object" (JS ka famous bug!) → return "null"
16 *        - typeof [] === "object" (Array bhi object hai) → return "array"
17 *        - Baaki sab ke liye typeof ki value return karo
18 *      - Example: getDataType(42) => "number"
19 *      - Example: getDataType("hello") => "string"
20 *      - Example: getDataType(null) => "null"
21 *      - Example: getDataType([1,2]) => "array"
22 *
23 *   2. isValidParcelWeight(weight)
24 *      - Number.isFinite() se check karo ki weight valid finite number hai
25 *      - Weight positive bhi hona chahiye (> 0)
26 *      - Infinity, NaN, ya non-number ke liye return false
27 *      - Example: isValidParcelWeight(2.5) => true
28 *      - Example: isValidParcelWeight(Infinity) => false
29 *      - Example: isValidParcelWeight("5") => false (string hai, number nahi!)
30 *
31 *   3. isWholeNumber(value)
32 *      - Number.isInteger() se check karo ki value whole number hai
33 *      - Example: isWholeNumber(42) => true
34 *      - Example: isWholeNumber(42.5) => false
35 *      - Example: isWholeNumber("42") => false
36 *
37 *   4. isNotANumber(value)
38 *      - Number.isNaN() se check karo ki value specifically NaN hai
39 *      - NOTE: Number.isNaN() alag hai global isNaN() se!
40 *        - Number.isNaN("hello") => false (string hai, NaN nahi)
41 *        - isNaN("hello") => true (pehle convert karta hai)
42 *      - Example: isNotANumber(NaN) => true
43 *      - Example: isNotANumber("hello") => false
44 *      - Example: isNotANumber(undefined) => false
45 *
46 *   5. isTruthy(value)
47 *      - Boolean(value) se check karo ki value truthy hai ya nahi
48 *      - JS mein Falsy values: false, 0, "", null, undefined, NaN
49 *      - Sab kuch aur truthy hai (including [], {}, "0", "false")!
50 *      - Example: isTruthy("hello") => true
51 *      - Example: isTruthy(0) => false
52 *      - Example: isTruthy([]) => true (haan, empty array truthy hai!)
53 *
54 * @example
55 *   getDataType(null)            // => "null"
56 *   getDataType([1,2,3])         // => "array"
57 *   isValidParcelWeight(2.5)     // => true
58 *   isTruthy("")                 // => false
59 */
60export function getDataType(value) {
61  
62  if(value === undefined){
63    return "undefined"
64  }
65  if(value === null){
66    return "null"
67  }
68  if(Array.isArray(value)){
69    return "array"
70  }
71  return typeof value
72}
73
74export function isValidParcelWeight(weight) {
75  if(typeof weight == "string" || !Number.isFinite(weight) || !(weight > 0)){
76    return false
77  }
78
79  return true
80}
81
82export function isWholeNumber(value) {
83  if(typeof value == "string" || value == null){
84    return false
85  }
86  return Number.isInteger(value)
87}
88
89export function isNotANumber(value) {
90  
91  return Number.isNaN(value)
92}
93
94export function isTruthy(value) {
95  return Boolean(value)
96}
97