59 lines
1.4 KiB
TypeScript
Raw Normal View History

2023-05-19 15:22:48 -03:00
const isString = (text: unknown): text is string => {
return typeof text === "string" || text instanceof String;
2023-05-19 15:22:48 -03:00
};
const parseString = (data: unknown): string => {
if (!isString(data)) {
throw new Error("data is not a string");
}
2023-05-19 15:22:48 -03:00
return data;
2023-05-19 15:22:48 -03:00
};
const isNumber = (number: unknown): number is number => {
return typeof number === "number" && !isNaN(number);
2023-05-19 15:22:48 -03:00
};
const parseNumber = (data: unknown): number => {
if (!isNumber(data)) {
throw new Error("data is not a number");
}
2023-05-19 15:22:48 -03:00
return Number(data);
2023-05-19 15:22:48 -03:00
};
const isDate = (date: string) => {
if (!Date.parse(date)) {
throw new Error("invalid date");
}
return date;
2023-05-19 15:22:48 -03:00
};
const parseDateNumber = (date: unknown): string => {
if (!isString(date) || !isDate(date)) {
throw new Error("date could not be parsed");
}
2023-05-19 15:22:48 -03:00
return date;
2023-05-19 15:22:48 -03:00
};
const parseEmail = (email: unknown): string => {
if (!isString(email)) {
throw new Error("incorrect email");
}
return email;
2023-05-19 15:22:48 -03:00
};
const isBoolean = (booleanCandidate: unknown): booleanCandidate is boolean => {
return typeof booleanCandidate === "boolean";
2023-05-19 15:22:48 -03:00
};
const parseBoolean = (booleanCandidate: unknown): boolean => {
if (!isBoolean(booleanCandidate)) {
throw new Error("argument was not a boolean");
}
return booleanCandidate;
2023-05-19 15:22:48 -03:00
};
export { isString, isNumber, parseString, parseNumber, parseDateNumber, parseBoolean, parseEmail };