В TypeScript проверка ввода — важнейший шаг в обеспечении корректности и безопасности ваших приложений. Проверяя вводимые пользователем данные, вы можете предотвратить потенциальные уязвимости, такие как атаки путем внедрения, повреждение данных и неправильное поведение приложений. В этой статье блога мы рассмотрим различные методы проверки ввода в TypeScript, приведя примеры кода для каждого подхода.
- Регулярные выражения.
Регулярные выражения (регулярные выражения) — это мощный инструмент для сопоставления с образцом и проверки данных. TypeScript изначально поддерживает регулярные выражения, что позволяет вам определять шаблоны и проверять, соответствует ли пользовательский ввод этим шаблонам. Вот пример использования регулярного выражения для проверки ввода:
const emailPattern = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
function validateEmail(email: string): boolean {
return emailPattern.test(email);
}
console.log(validateEmail("test@example.com")); // Output: true
console.log(validateEmail("invalid-email")); // Output: false
- Защита типов.
Система типов TypeScript предоставляет механизм, называемый защитой типов, который позволяет проверять входные данные на основе определенных типов. Защита типов позволяет выполнять проверки переменных во время выполнения, чтобы убедиться, что они соответствуют определенному типу. Вот пример:
function isPositiveNumber(num: unknown): num is number {
return typeof num === "number" && num > 0;
}
function calculateSquareRoot(num: unknown): number | undefined {
if (isPositiveNumber(num)) {
return Math.sqrt(num);
}
}
console.log(calculateSquareRoot(25)); // Output: 5
console.log(calculateSquareRoot(-10)); // Output: undefined
- Библиотеки и платформы.
Существует множество библиотек и платформ, предлагающих механизмы проверки входных данных. Одной из популярных библиотек является Joi, которая предоставляет простой и декларативный API для проверки данных. Вот пример использования Джой:
import Joi from "joi";
const schema = Joi.object({
username: Joi.string().alphanum().min(3).max(30).required(),
password: Joi.string().pattern(new RegExp("^[a-zA-Z0-9]{3,30}$")),
email: Joi.string().email(),
});
function validateUser(user: unknown): boolean {
const { error } = schema.validate(user);
return error === undefined;
}
console.log(
validateUser({ username: "John123", password: "password123", email: "john@example.com" })
); // Output: true
console.log(
validateUser({ username: "Jo", password: "password", email: "invalid-email" })
); // Output: false
В этой статье мы рассмотрели три различных метода проверки ввода в TypeScript: регулярные выражения, защиту типов и использование библиотек/фреймворков, таких как Joi. Каждый метод имеет свои преимущества и может использоваться в зависимости от ваших конкретных требований. Внедрив правильную проверку ввода, вы можете повысить надежность и безопасность своих приложений TypeScript.