Передовые практики использования условной логики в TypeScript
В этой статье объясняются лучшие практики для работы с условной логикой в TypeScript.
YouTube Video
Передовые практики использования условной логики в TypeScript
Узкая специализация типов с помощью защит типа
Используя систему типов TypeScript и применяя защиту типа внутри операторов if
, вы можете улучшить типобезопасность и читаемость кода.
1function processInput(input: string | number) {
2 if (typeof input === "string") {
3 console.log(`String input: ${input.toUpperCase()}`);
4 } else {
5 console.log(`Number input: ${input.toFixed(2)}`);
6 }
7}
Использование typeof
и других защит типов обеспечивает безопасность типов и контекстуальную уместность кода внутри каждого блока.
Избегайте вложенных операторов if
Сильно вложенные операторы if
снижают читаемость и поддерживаемость кода. Вместо этого используйте ранний выход, логические операторы или извлечение функций.
Плохой пример:
1function checkUser(user: { age?: number; isAdmin?: boolean }) {
2 if (user.age) {
3 if (user.age > 18) {
4 if (user.isAdmin) {
5 console.log("User is an adult admin.");
6 }
7 }
8 }
9}
Улучшенный пример:
1function checkUser(user: { age?: number; isAdmin?: boolean }) {
2 if (!user.age || user.age <= 18 || !user.isAdmin) {
3 return;
4 }
5 console.log("User is an adult admin.");
6}
Этот подход упрощает код и делает логику более понятной.
Используйте опциональную цепочку
При проверке вложенных свойств используйте опциональную цепочку (?.
), чтобы избежать лишних условий if
.
Без опциональной цепочки:
1if (user && user.profile && user.profile.email) {
2 console.log(user.profile.email);
3}
С использованием опциональной цепочки:
1if (user?.profile?.email) {
2 console.log(user.profile.email);
3}
Это уменьшает количество шаблонного кода и улучшает читаемость. Здесь под шаблонным кодом подразумевается повторяющийся, стандартизированный код, который часто необходим для выполнения определенных задач в программировании.
Используйте операторы строгого равенства
TypeScript поддерживает строгую типизацию, а использование операторов строгого равенства (===
) или строгого неравенства (!==
) помогает предотвратить неожиданное приведение типов.
Плохой пример:
1if (value == "123") {
2 console.log("Value is 123.");
3}
Улучшенный пример:
1if (value === "123") {
2 console.log("Value is 123.");
3}
Используйте перечисления или литеральные типы для явных условий
Использование перечислений или литеральных типов уточняет условия и снижает вероятность ошибок.
1type Status = "success" | "error" | "loading";
2
3function displayMessage(status: Status) {
4 if (status === "success") {
5 console.log("Operation succeeded.");
6 } else if (status === "error") {
7 console.log("Operation failed.");
8 } else {
9 console.log("Loading...");
10 }
11}
Определяя ожидаемые значения, TypeScript может обнаруживать типы и обеспечивать точность.
Объединяйте схожие условия
Когда несколько условий имеют одинаковую логику, объединяйте их с помощью логических операторов или оператора switch.
Плохой пример:
1if (role === "admin") {
2 grantAccess();
3}
4if (role === "superadmin") {
5 grantAccess();
6}
Улучшенный пример:
1if (role === "admin" || role === "superadmin") {
2 grantAccess();
3}
Или используйте оператор switch для обработки нескольких чётких ветвей:
1switch (role) {
2 case "admin":
3 case "superadmin":
4 grantAccess();
5 break;
6 case "user":
7 console.log("Limited access.");
8 break;
9 default:
10 console.log("No access.");
11}
Избегайте усложнения условных выражений
Сложные условные выражения в конструкциях if ухудшают читаемость. Выносите их в осмысленные переменные или функции.
Плохой пример:
1if (user.age > 18 && user.isAdmin && user.permissions.includes("write")) {
2 console.log("User can write.");
3}
Улучшенный пример:
1const isAdultAdminWithWriteAccess = user.age > 18 && user.isAdmin && user.permissions.includes("write");
2if (isAdultAdminWithWriteAccess) {
3 console.log("User can write.");
4}
Именование условий улучшает ясность и делает код самодокументирующимся.
Используйте тернарные операторы для простых условий
Для простых условий использование тернарных операторов делает код более лаконичным.
Пример:
1const message = isLoggedIn ? "Welcome back!" : "Please log in.";
2console.log(message);
Однако избегайте использования тернарных операторов для сложных условий, так как это снижает читаемость.
Заключение
Следуя этим рекомендациям, вы можете сделать конструкции if в TypeScript понятными, эффективными и удобными для сопровождения. Используйте возможности TypeScript, такие как защитные конструкции типов, опциональные цепочки и перечисления, чтобы улучшить читаемость и надёжность вашего кода. Делайте условия лаконичными и понятными, стремясь к тому, чтобы ваш код всегда был лёгким для понимания и сопровождения.
Вы можете следовать этой статье, используя Visual Studio Code на нашем YouTube-канале. Пожалуйста, также посмотрите наш YouTube-канал.