import { dateInterval } from "@nuka9510/js-util/@types/util"; export default class Util { /** * 값이 비어있는지 확인한다. * * ``` * // returns true * empty(undefined); * empty(null); * empty(0); * empty(''); * empty([]); * empty({}); * ``` */ static empty( /** 확인할 값 */ arg: any): boolean; /** * 값이 숫자인지 확인한다. * * ``` * // returns true * isNumber(1); * isNumber('1'); * * // returns false * isNumber('test'); * isNumber('1', true); * ``` */ static isNumber( /** 확인할 값 */ arg: any, /** `true`일 경우 `arg`의 `type`도 확인 | #default `false` */ strict?: boolean): boolean; /** * 해당 값이 객체인지 확인 * * ``` * // returns true * isObject({}); * * // returns false * isObject(undefined); * isObject(null); * isObject(0); * isObject(''); * isObject([]); * ``` */ static isObject( /** 확인할 값 */ arg: any): boolean; /** * 천 단위 마다 그룹화 된 숫자 형식으로 변환한 문자열을 반환 한다. * * ``` * // returns '1,000' * numberFormat(1000); * numberFormat(1000.01); * * // returns '1,000.0' * numberFormat(1000.01, 1); * * // returns '1,000 0' * numberFormat(1000.01, 1, ' '); * * // returns '1.000 0' * numberFormat(1000.01, 1, ' ', '.'); * ``` */ static numberFormat( /** 변환할 숫자 - `number` 타입이 아닌경우 `null` 반환 */ num: number, /** 소숫점 아래 자리 수 - `number` 타입이 아닌경우 `null` 반환 | #default `0` */ decimals?: number, /** 소수점 구분자 | #default `'.'` */ decimalSeparator?: string, /** 천 단위 구분자 | #default `','` */ thousandsSeparator?: string): string | null; /** * 주어진 포맷에 따라 `Date`객체를 문자열로 변환 * * ``` * const date = new Date(2022, 9, 27); * * // returns '2022-10-27' * strftime(date, '%Y-%m-%d'); * * // returns '2022/10/27' * strftime(date, '%Y/%m/%d'); * ``` * * `%a`: 요일을 축약된 이름으로 - Sun, Mon, …, Sat \ * `%A`: 요일을 전체 이름으로 - Sunday, Monday, …, Saturday \ * `%d`: 월중 일(day of the month)을 0으로 채워진 10진수로 - 01, 02, …, 31 \ * `%b`: 월을 축약된 이름으로 - Jan, Feb, …, Dec \ * `%B`: 월을 전체 이름으로 - January, February, …, December \ * `%m`: 월을 0으로 채워진 10진수로 - 01, 02, …, 12 \ * `%y`: 세기가 없는 해(year)를 0으로 채워진 10진수로 - 00, 01, …, 99 \ * `%Y`: 세기가 있는 해(year)를 10진수로 - 0001, 0002, …, 2013, 2014, …, 9998, 9999 \ * `%H`: 시(24시간제)를 0으로 채워진 십진수로 - 00, 01, …, 23 \ * `%I`: 시(12시간제)를 0으로 채워진 십진수로 - 01, 02, …, 12 \ * `%p`: 오전이나 오후에 해당하는 것 - AM, PM \ * `%M`: 분을 0으로 채워진 십진수로 - 00, 01, …, 59 \ * `%S`: 초를 0으로 채워진 10진수로 - 00, 01, …, 59 \ * `%%`: 리터럴 '%' 문자 - % */ static strftime( /** 변환할 `Date`객체 */ date: Date, /** 변활할 포맷 문자열 */ format: string): string; /** * 유효한 날짜인지 확인 * * ``` * // returns true * checkdate(2022, 10, 28); * * // returns false * checkdate(2022, 10, 32); * ``` */ static checkdate( /** 년 */ year: number, /** 월 */ month: number, /** 일 */ day: number): boolean; /** * 같은 날짜인지 비교 * * ``` * const date1 = new Date(); * const date2 = new Date(); * * // returns true * equaldate(date1); * equaldate(date1, date2); * * // returns false * date1.setDate(date1.getDate() + 1); * date2.setDate(date2.getDate() + 2); * equaldate(date1); * equaldate(date1, date2); * ``` */ static equaldate( /** 기준 날짜 */ date1: Date, /** 비교할 날짜 | #default `new Date()` */ date2?: Date): boolean; /** * Date객체에서 해당 하는 요일을 반환한다. * * ``` * const date = new Date(2022, 9, 27); * * // returns '목요일' * getWeek(date); * * // returns '목' * getWeek(date, false); * ``` */ static getWeek( /** 요일을 반환할 `Date` 객체 */ date: Date, /** 해당 요일의 약어반환 대한 구분 값 `false`일 경우 약어 반환 | #default `true` */ flag?: boolean): string; /** * `Date`객체에 `interval`를 더한 값을 반환한다. * * ``` * const date = new Date(2022, 8, 27); * * // returns '2022-10-28' * strftime(util.addDate(date, {month: 1, day: 1}), '%Y-%m-%d'); * ``` */ static addDate( /** 기준 `Date`객체 */ date: Date, /** `Date`객체에 계산할 `interval` */ interval: dateInterval): Date; /** * `Date`객체에 `interval`를 뺀 값을 반환한다. * * ``` * const date = new Date(2022, 8, 27); * * // returns '2022-08-26' * strftime(util.subDate(date, {month: 1, day: 1}), '%Y-%m-%d'); * ``` */ static subDate( /** 기준 `Date`객체 */ date: Date, /** `Date`객체에 계산할 `interval` */ interval: dateInterval): Date; /** * xor 비교 * * ``` * // returns true * xor(true, false); * xor(false, true); * * // returns false * xor(true, true); * xor(false, false); * ``` */ static xor( /** 비교할 값 1 */ arg1: boolean, /** 비교할 값 2 */ arg2: boolean): boolean; /** * `FormDate`객체에 설정된 값을 `json`문자열로 반환 한다. * * ``` * const data = new FormData(); * * data.append('key', value); * * const json = formDataToJson(data); * ``` */ static formDataToJson( /** `json`문자열로 반환할 `FormData`객체 */ formData: FormData): string; /** * 기준 숫자의 백분율 값을 적용했을 경우의 값을 반환한다. * * ``` * // returns 10 * percentage(100, 10); * ``` */ static percentage( /** 기준 숫자 */ num: number, /** 백분율 */ per: number): number; /** * 기준 숫자의 비율 대비 값을 반환한다. * * ``` * // returns 8 * // 1 : 2 = 4 : x * ratio([1, 2], 4); * * // returns 2 * // 1 : 2 = x : 4 * ratio([1, 2], 4, false); * ``` */ static ratio( /** 비율 */ ratio: [number, number], /** 기준 숫자 */ num: number, /** 비율 적용 기준 | #default `true` */ flag?: boolean): number; /** * `x` 번째의 항이 `a`이고 공차가 `d`인 등차수열의 `n` 번째 항을 반환 한다. */ static arithmeticSequence( /** 기준 항 */ a: number, /** 기준 위치 `x > 0`인 정수 */ x: number, /** 공차 */ d: number, /** 반환 위치 */ n: number): number; /** * `x` 번째의 항이 `a`이고 공비가 `r`인 등비수열의 `n` 번째 항을 반환 한다. */ static geometricSequence( /** 기준 항 */ a: number, /** 기준 위치 `x > 0`인 정수 */ x: number, /** 공비 */ r: number, /** 반환 위치 */ n: number): number; /** * `value`를 반올림(round), 내림(floor), 올림(ceil) 한 값을 반환한다. */ static decimalAdjust( /** 구분 기준 `반올림(round)`, `내림(floor)`, `올림(ceil)` */ type: 'round' | 'floor' | 'ceil', /** 기준 값 */ value: number, /** 소숫점 아래 자리 수 | #default `0` */ exp?: number): number; /** * html entity를 인코딩 한다. */ static encodeHtmlEntity( /** html entity를 인코딩 할 문자열 */ arg: string): string; /** * html entity를 디코딩 한다. */ static decodeHtmlEntity( /** html entity를 디코딩 할 문자열 */ arg: string): string; /** * `Object`의 `deepCopy`를 반환 한다. */ static copy( /** `deepCopy`할 `Object` */ arg?: T | null): T; /** * `sNum` <= `x` <= `eNum` 범위의 배열을 반환한다. */ static numRange( /** 시작 값 */ sNum: number, /** 종료 값 */ eNum: number): number[]; /** * `size`를 크기로 하는 `chunk`를 담은 배열을 반환한다. */ static arrayChunk( /** 기준 배열 */ arr: T[], /** `chunk`의 크기 (`size > 0`인 정수) */ size: number): T[][]; /** * `value`를 `mapper`로 변환 한 값을 반환한다. */ static get( /** 변환 할 `value` */ value: T, /** 변환 시 사용할 `mapper` */ mapper: (value: T) => R | null): R | null; /** * `value`를 `mapper`로 변환 한 값을 반환한다. */ static getOrElse( /** 변환 할 `value` */ value: T, /** 변환 한 값이 `null`일 경우 기본값 */ def: T | R | null, /** 변환 시 사용할 `mapper` */ mapper?: (value: T) => T | R | null): T | R | null; }