todo-app

Форк
0
57 строк · 1.3 Кб
1
export const isValidDate = (value: Date) => !Number.isNaN(value.getTime());
2

3
export const toDate = (value: Date | string) => {
4
  const parsedValue = typeof value === 'string' ? new Date(value) : value;
5
  if (isValidDate(parsedValue)) {
6
    return parsedValue;
7
  }
8

9
  return new Date();
10
};
11

12
export const tryParseInt = (
13
  value: number | string | null | undefined,
14
  defaultValue = 0,
15
  radix?: number,
16
) => {
17
  if (Number.isNaN(value) || value === null || value === undefined) {
18
    return defaultValue;
19
  }
20

21
  if (typeof value === 'number') {
22
    return value;
23
  }
24

25
  const parsedValue = parseInt(value, radix);
26
  if (Number.isNaN(parsedValue)) {
27
    return defaultValue;
28
  }
29

30
  return parsedValue;
31
};
32

33
export const customCompareIf = <V, N>(
34
  value: V,
35
  needle: N | undefined,
36
  comparator: (value: V, needle: N) => boolean,
37
) => {
38
  if (needle === undefined) {
39
    return true;
40
  }
41

42
  return comparator(value, needle);
43
};
44

45
export const compareIf = <T>(value: T, needle: T | undefined) => {
46
  return customCompareIf(value, needle, (value, needle) => value === needle);
47
};
48

49
export const clamp = (min: number, max: number, value: number) =>
50
  Math.max(min, Math.min(max, value));
51

52
export const excludeKey = <T, K extends keyof T>(entry: T, key: K) => {
53
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
54
  const { [key]: _, ...data } = entry;
55

56
  return data;
57
};
58

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.