DEV Community

Javascript Developer
Javascript Developer

Posted on

50 Most Useful TypeScript Snippets

1. Generate a Random Number

function getRandomNumber(max: number): number {
  return Math.floor(Math.random() * max);
}
Enter fullscreen mode Exit fullscreen mode

2. Check If an Object Is Empty

function isEmptyObject(obj: Record<string, unknown>): boolean {
  return Object.keys(obj).length === 0;
}
Enter fullscreen mode Exit fullscreen mode

3. Create a Countdown Timer

function countdownTimer(minutes: number): void {
  let seconds = minutes * 60;
  const interval = setInterval(() => {
    console.log(`${Math.floor(seconds / 60)}:${seconds % 60}`);
    if (--seconds < 0) clearInterval(interval);
  }, 1000);
}
Enter fullscreen mode Exit fullscreen mode

4. Sort Array of Objects by Property

function sortByProperty<T>(arr: T[], prop: keyof T): T[] {
  return arr.sort((a, b) => (a[prop] > b[prop] ? 1 : -1));
}
Enter fullscreen mode Exit fullscreen mode

5. Remove Duplicates from an Array

function removeDuplicates<T>(arr: T[]): T[] {
  return [...new Set(arr)];
}
Enter fullscreen mode Exit fullscreen mode

6. Truncate a String

function truncateString(str: string, length: number): string {
  return str.length > length ? `${str.slice(0, length)}...` : str;
}
Enter fullscreen mode Exit fullscreen mode

7. Convert String to Title Case

function toTitleCase(str: string): string {
  return str.replace(/\b\w/g, char => char.toUpperCase());
}
Enter fullscreen mode Exit fullscreen mode

8. Check if Value Exists in Array

function valueExists<T>(arr: T[], value: T): boolean {
  return arr.includes(value);
}
Enter fullscreen mode Exit fullscreen mode

9. Reverse a String

function reverseString(str: string): string {
  return str.split('').reverse().join('');
}
Enter fullscreen mode Exit fullscreen mode

10. Increment Numbers in an Array

function incrementArray(arr: number[]): number[] {
  return arr.map(num => num + 1);
}
Enter fullscreen mode Exit fullscreen mode

11. Debounce a Function

function debounce<F extends (...args: any[]) => void>(func: F, delay: number): F {
  let timeout: ReturnType<typeof setTimeout>;
  return function(this: any, ...args: any[]) {
    clearTimeout(timeout);
    timeout = setTimeout(() => func.apply(this, args), delay);
  } as F;
}
Enter fullscreen mode Exit fullscreen mode

12. Throttle a Function

function throttle<F extends (...args: any[]) => void>(func: F, limit: number): F {
  let lastRun = 0;
  return function(this: any, ...args: any[]) {
    const now = Date.now();
    if (now - lastRun >= limit) {
      func.apply(this, args);
      lastRun = now;
    }
  } as F;
}
Enter fullscreen mode Exit fullscreen mode

13. Clone an Object

function cloneObject<T>(obj: T): T {
  return { ...obj };
}
Enter fullscreen mode Exit fullscreen mode

14. Merge Two Objects

function mergeObjects<T, U>(obj1: T, obj2: U): T & U {
  return { ...obj1, ...obj2 };
}
Enter fullscreen mode Exit fullscreen mode

15. Check for Palindrome String

function isPalindrome(str: string): boolean {
  const cleaned = str.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();
  return cleaned === cleaned.split('').reverse().join('');
}
Enter fullscreen mode Exit fullscreen mode

16. Count Occurrences in an Array

function countOccurrences<T>(arr: T[]): Record<string, number> {
  return arr.reduce((acc, val) => {
    const key = String(val);
    acc[key] = (acc[key] || 0) + 1;
    return acc;
  }, {} as Record<string, number>);
}
Enter fullscreen mode Exit fullscreen mode

17. Get Day of the Year

function getDayOfYear(date: Date): number {
  const start = new Date(date.getFullYear(), 0, 0);
  const diff = date.getTime() - start.getTime();
  return Math.floor(diff / (1000 * 60 * 60 * 24));
}
Enter fullscreen mode Exit fullscreen mode

18. Filter Unique Values from Array

function getUniqueValues<T>(arr: T[]): T[] {
  return [...new Set(arr)];
}
Enter fullscreen mode Exit fullscreen mode

19. Convert Degrees to Radians

function degreesToRadians(degrees: number): number {
  return (degrees * Math.PI) / 180;
}
Enter fullscreen mode Exit fullscreen mode

20. Delay Function Execution

function defer(fn: (...args: any[]) => void, ...args: any[]): void {
  setTimeout(() => fn(...args), 1);
}
Enter fullscreen mode Exit fullscreen mode

21. Capitalize First Letter

function capitalizeFirstLetter(str: string): string {
  return str.charAt(0).toUpperCase() + str.slice(1);
}
Enter fullscreen mode Exit fullscreen mode

22. Convert Array to Chunked Groups

function chunkArray<T>(arr: T[], size: number): T[][] {
  return Array.from({ length: Math.ceil(arr.length / size) }, (_, i) =>
    arr.slice(i * size, i * size + size)
  );
}
Enter fullscreen mode Exit fullscreen mode

23. Flatten Nested Arrays

function flattenArray<T>(arr: any[]): T[] {
  return arr.flat(Infinity) as T[];
}
Enter fullscreen mode Exit fullscreen mode

24. Get Random Element from Array

function randomElement<T>(arr: T[]): T {
  return arr[Math.floor(Math.random() * arr.length)];
}
Enter fullscreen mode Exit fullscreen mode

25. Shuffle an Array

function shuffleArray<T>(arr: T[]): T[] {
  return arr.sort(() => Math.random() - 0.5);
}
Enter fullscreen mode Exit fullscreen mode

26. Find Max in Array

function arrayMax(arr: number[]): number {
  return Math.max(...arr);
}
Enter fullscreen mode Exit fullscreen mode

27. Find Min in Array

function arrayMin(arr: number[]): number {
  return Math.min(...arr);
}
Enter fullscreen mode Exit fullscreen mode

28. Remove Null and Undefined

function removeEmpty<T>(arr: (T | null | undefined)[]): T[] {
  return arr.filter((x): x is T => x != null);
}
Enter fullscreen mode Exit fullscreen mode

29. Format Date as YYYY-MM-DD

function formatDate(date: Date): string {
  return date.toISOString().split('T')[0];
}
Enter fullscreen mode Exit fullscreen mode

30. Round to N Decimal Places

function roundTo(num: number, decimals: number): number {
  return parseFloat(num.toFixed(decimals));
}
Enter fullscreen mode Exit fullscreen mode

31. Generate Random UUID

function generateUUID(): string {
  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {
    const r = (Math.random() * 16) | 0;
    const v = c === 'x' ? r : (r & 0x3) | 0x8;
    return v.toString(16);
  });
}
Enter fullscreen mode Exit fullscreen mode

32. Check if Number is Even

function isEven(num: number): boolean {
  return num % 2 === 0;
}
Enter fullscreen mode Exit fullscreen mode

33. Check if Number is Odd

function isOdd(num: number): boolean {
  return num % 2 !== 0;
}
Enter fullscreen mode Exit fullscreen mode

34. Sleep / Delay

function sleep(ms: number): Promise<void> {
  return new Promise(resolve => setTimeout(resolve, ms));
}
Enter fullscreen mode Exit fullscreen mode

35. Retry a Function

async function retry<T>(fn: () => Promise<T>, retries: number): Promise<T> {
  let lastError: any;
  for (let i = 0; i < retries; i++) {
    try {
      return await fn();
    } catch (err) {
      lastError = err;
    }
  }
  throw lastError;
}
Enter fullscreen mode Exit fullscreen mode

36. Get Query Parameters from URL

function getQueryParams(url: string): Record<string, string> {
  return Object.fromEntries(new URL(url).searchParams.entries());
}
Enter fullscreen mode Exit fullscreen mode

37. Generate Random Boolean

function randomBoolean(): boolean {
  return Math.random() >= 0.5;
}
Enter fullscreen mode Exit fullscreen mode

38. Convert Object to Query String

function toQueryString(params: Record<string, any>): string {
  return new URLSearchParams(params).toString();
}
Enter fullscreen mode Exit fullscreen mode

39. Deep Clone Object

function deepClone<T>(obj: T): T {
  return JSON.parse(JSON.stringify(obj));
}
Enter fullscreen mode Exit fullscreen mode

40. Remove Falsey Values from Array

function compact<T>(arr: T[]): T[] {
  return arr.filter(Boolean);
}
Enter fullscreen mode Exit fullscreen mode

41. Check if String is JSON

function isJSON(str: string): boolean {
  try {
    JSON.parse(str);
    return true;
  } catch {
    return false;
  }
}
Enter fullscreen mode Exit fullscreen mode

42. Generate Random Hex Color

function randomHexColor(): string {
  return `#${Math.floor(Math.random() * 16777215).toString(16)}`;
}
Enter fullscreen mode Exit fullscreen mode

43. Convert Bytes to Human Readable

function formatBytes(bytes: number): string {
  if (bytes === 0) return '0 Bytes';
  const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
  const i = Math.floor(Math.log(bytes) / Math.log(1024));
  return `${(bytes / Math.pow(1024, i)).toFixed(2)} ${sizes[i]}`;
}
Enter fullscreen mode Exit fullscreen mode

44. Check if String Contains Substring

function contains(str: string, substr: string): boolean {
  return str.includes(substr);
}
Enter fullscreen mode Exit fullscreen mode

45. Pluck Property Values from Array

function pluck<T, K extends keyof T>(arr: T[], key: K): T[K][] {
  return arr.map(item => item[key]);
}
Enter fullscreen mode Exit fullscreen mode

46. Intersection of Two Arrays

function intersect<T>(a: T[], b: T[]): T[] {
  return a.filter(value => b.includes(value));
}
Enter fullscreen mode Exit fullscreen mode

47. Difference of Two Arrays

function difference<T>(a: T[], b: T[]): T[] {
  return a.filter(value => !b.includes(value));
}
Enter fullscreen mode Exit fullscreen mode

48. Zip Two Arrays

function zip<T, U>(a: T[], b: U[]): [T, U][] {
  return a.map((val, i) => [val, b[i]]);
}
Enter fullscreen mode Exit fullscreen mode

49. Unzip Array

function unzip<T, U>(arr: [T, U][]): [T[], U[]] {
  return arr.reduce(([a, b], [x, y]) => [[...a, x], [...b, y]], [[], []] as [T[], U[]]);
}
Enter fullscreen mode Exit fullscreen mode

50. Unique by Property

function uniqueBy<T>(arr: T[], key: keyof T): T[] {
  const seen = new Set();
  return arr.filter(item => {
    const val = item[key];
    if (seen.has(val)) return false;
    seen.add(val);
    return true;
  });
}
Enter fullscreen mode Exit fullscreen mode

Top comments (1)

Collapse
 
baptistefkt profile image
Baptiste Firket

Are you sure checking for palindrome is really useful?