10 промтов для генерации JavaScript и TypeScript кода: React, Node.js и утилиты

Введение

Разработка на JavaScript и TypeScript — одна из самых динамичных областей программирования. С каждым годом появляются новые фреймворки, библиотеки и подходы. Однако, как и в любой другой сфере, разработчики сталкиваются с рутинными задачами: написание шаблонного кода, создание типов, обработка ошибок, генерация тестов. Искусственный интеллект (AI) уже давно стал незаменимым помощником в таких сценариях. Но чтобы AI выдавал действительно полезный код, нужно уметь правильно формулировать запросы — промты.

Эта статья — подборка из 10 проверенных промтов для генерации JavaScript и TypeScript кода. Я использую их сам в повседневной работе, и они помогли мне сократить время на написание рутины на 30-40%. Каждый промт сопровождается реальным примером применения и пояснением, как его адаптировать под ваши нужды. В конце — таблица сравнения популярных AI-инструментов и рекомендации по выбору.

1. Промт для генерации React-компонента с TypeScript

Промт: «Создай React-компонент на TypeScript для отображения списка пользователей. Компонент должен принимать пропсы: массив объектов с полями id (number), name (string), email (string). Реализуй обработку состояния загрузки (isLoading) и пустого списка. Используй функциональный компонент с хуками.»

Пример применения: Этот промт идеален, когда нужно быстро создать UI-компонент с типизацией. AI генерирует не только сам код, но и типы, что экономит время на их написание вручную. Я часто использую его для прототипирования интерфейсов в новых проектах.

Результат:

import React from 'react';

interface User {
  id: number;
  name: string;
  email: string;
}

interface UserListProps {
  users: User[];
  isLoading: boolean;
}

const UserList: React.FC<UserListProps> = ({ users, isLoading }) => {
  if (isLoading) {
    return <div>Загрузка...</div>;
  }

  if (users.length === 0) {
    return <div>Список пользователей пуст.</div>;
  }

  return (
    <ul>
      {users.map((user) => (
        <li key={user.id}>
          {user.name} - {user.email}
        </li>
      ))}
    </ul>
  );
};

export default UserList;

2. Промт для создания API-эндпоинта на Node.js с Express

Промт: «Напиши эндпоинт на Node.js с Express и TypeScript для получения данных пользователя по ID. Используй Prisma ORM для работы с базой данных. Реализуй обработку ошибок: если пользователь не найден — верни 404, если ID невалидный — 400.»

Пример применения: Этот промт помогает быстро набросать REST API с типизацией и обработкой ошибок. Я применяю его при создании микросервисов или бэкенд-части для React-приложений.

Результат:

import { Request, Response } from 'express';
import { PrismaClient } from '@prisma/client';

const prisma = new PrismaClient();

export const getUserById = async (req: Request, res: Response) => {
  const { id } = req.params;
  const userId = parseInt(id, 10);

  if (isNaN(userId)) {
    return res.status(400).json({ error: 'ID должен быть числом' });
  }

  try {
    const user = await prisma.user.findUnique({
      where: { id: userId },
    });

    if (!user) {
      return res.status(404).json({ error: 'Пользователь не найден' });
    }

    return res.status(200).json(user);
  } catch (error) {
    console.error('Ошибка при получении пользователя:', error);
    return res.status(500).json({ error: 'Внутренняя ошибка сервера' });
  }
};

3. Промт для генерации утилит по работе с датами

Промт: «Создай набор утилит на TypeScript для работы с датами: форматирование даты в формат 'DD.MM.YYYY', проверка, является ли дата выходным (суббота или воскресенье), вычисление разницы в днях между двумя датами. Используй Date без сторонних библиотек.»

Пример применения: Такие утилиты нужны в любом проекте. Вместо того чтобы писать их вручную или тащить библиотеку вроде date-fns для простых задач, я генерирую их через AI.

Результат:

export const formatDate = (date: Date): string => {
  const day = String(date.getDate()).padStart(2, '0');
  const month = String(date.getMonth() + 1).padStart(2, '0');
  const year = date.getFullYear();
  return `${day}.${month}.${year}`;
};

export const isWeekend = (date: Date): boolean => {
  const day = date.getDay();
  return day === 0 || day === 6;
};

export const daysBetween = (date1: Date, date2: Date): number => {
  const msPerDay = 1000 * 60 * 60 * 24;
  const diff = Math.abs(date2.getTime() - date1.getTime());
  return Math.floor(diff / msPerDay);
};

4. Промт для написания unit-тестов (Jest + TypeScript)

Промт: «Напиши unit-тесты на Jest для функции, которая принимает массив чисел и возвращает сумму чётных чисел. Используй TypeScript. Тесты должны покрывать: пустой массив, массив без чётных чисел, массив с отрицательными числами.»

Пример применения: Тесты — это скучно, но необходимо. AI генерирует тесты быстрее, чем я пишу их вручную. Этот промт помогает создать базовое покрытие за секунды.

Результат:

import { sumEvenNumbers } from './sumEvenNumbers';

describe('sumEvenNumbers', () => {
  it('должна вернуть 0 для пустого массива', () => {
    expect(sumEvenNumbers([])).toBe(0);
  });

  it('должна вернуть 0 для массива без чётных чисел', () => {
    expect(sumEvenNumbers([1, 3, 5])).toBe(0);
  });

  it('должна вернуть сумму чётных чисел', () => {
    expect(sumEvenNumbers([1, 2, 3, 4, 5, 6])).toBe(12);
  });

  it('должна обрабатывать отрицательные числа', () => {
    expect(sumEvenNumbers([-2, -4, 3])).toBe(-6);
  });
});

5. Промт для создания кастомного хука в React

Промт: «Создай кастомный хук useDebounce на TypeScript. Хук должен принимать значение (value) и задержку (delay в миллисекундах). Возвращать debounced-значение. Используй useEffect и useState.»

Пример применения: Кастомные хуки — основа React. Этот хук нужен для оптимизации поиска, фильтрации или любых операций, где нужно избежать частых вызовов.

Результат:

import { useState, useEffect } from 'react';

export function useDebounce<T>(value: T, delay: number): T {
  const [debouncedValue, setDebouncedValue] = useState<T>(value);

  useEffect(() => {
    const handler = setTimeout(() => {
      setDebouncedValue(value);
    }, delay);

    return () => {
      clearTimeout(handler);
    };
  }, [value, delay]);

  return debouncedValue;
}

6. Промт для генерации TypeScript-типов из JSON

Промт: «Сгенерируй TypeScript-интерфейсы для следующего JSON-объекта: { "id": 1, "name": "John", "email": "john@example.com", "address": { "city": "New York", "zip": "10001" }, "tags": ["admin", "user"] }. Создай вложенные интерфейсы для address.»

Пример применения: При работе с API часто нужно быстро создать типы для ответа сервера. Вместо того чтобы писать их вручную, я прошу AI сгенерировать их из примера JSON.

Результат:

interface Address {
  city: string;
  zip: string;
}

interface User {
  id: number;
  name: string;
  email: string;
  address: Address;
  tags: string[];
}

7. Промт для реализации паттерна Singleton на TypeScript

Промт: «Реализуй паттерн Singleton на TypeScript для класса Logger. Класс должен иметь метод log(message: string), который выводит сообщение в консоль. Гарантируй, что можно создать только один экземпляр класса.»

Пример применения: Singleton полезен для управления глобальными состояниями, логгерами или конфигурациями. AI генерирует правильную реализацию с блокировкой создания нескольких экземпляров.

Результат:

class Logger {
  private static instance: Logger;

  private constructor() {}

  public static getInstance(): Logger {
    if (!Logger.instance) {
      Logger.instance = new Logger();
    }
    return Logger.instance;
  }

  public log(message: string): void {
    console.log(`[Logger]: ${message}`);
  }
}

export default Logger.getInstance();

8. Промт для создания асинхронной функции с обработкой ошибок

Промт: «Напиши асинхронную функцию на TypeScript, которая делает HTTP-запрос к API и возвращает данные. Используй fetch. Реализуй обработку ошибок: если статус ответа не 200 — выброси ошибку с текстом из ответа. Добавь тип возвращаемых данных через дженерик.»

Пример применения: Универсальный промт для создания утилиты для работы с API. Я использую его как основу для всех HTTP-запросов в проектах.

Результат:

export async function fetchData<T>(url: string): Promise<T> {
  try {
    const response = await fetch(url);

    if (!response.ok) {
      const errorText = await response.text();
      throw new Error(`HTTP ошибка ${response.status}: ${errorText}`);
    }

    const data: T = await response.json();
    return data;
  } catch (error) {
    console.error('Ошибка при запросе:', error);
    throw error;
  }
}

9. Промт для генерации документации JSDoc

Промт: «Добавь JSDoc-комментарии к следующей функции на TypeScript. Функция принимает массив строк и возвращает объект, где ключи — уникальные строки, а значения — количество их вхождений. Опиши параметры, возвращаемое значение и пример использования.»

Пример применения: Документация — это то, что все откладывают. AI может генерировать JSDoc за секунды, делая код более читаемым и поддерживаемым.

Результат:

/**
 * Подсчитывает количество вхождений каждой строки в массиве.
 *
 * @param strings - Массив строк для подсчёта.
 * @returns Объект, где ключи — уникальные строки из массива, а значения — количество их вхождений.
 * 
 * @example
 * // returns { apple: 2, banana: 1 }
 * countOccurrences(['apple', 'banana', 'apple']);
 */
export function countOccurrences(strings: string[]): Record<string, number> {
  const result: Record<string, number> = {};
  for (const str of strings) {
    result[str] = (result[str] || 0) + 1;
  }
  return result;
}

10. Промт для миграции с JavaScript на TypeScript

Промт: «Перепиши следующий JavaScript-код на TypeScript с добавлением типов. Код: function add(a, b) { return a + b; }. Учти, что a и b могут быть числами или строками. Используй перегрузку функций.»

Пример применения: При миграции старых проектов на TypeScript этот промт экономит часы работы. AI не только добавляет типы, но и предлагает лучшие практики.

Результат:

function add(a: number, b: number): number;
function add(a: string, b: string): string;
function add(a: number

| string, b: number | string): number | string {
  if (typeof a === 'number' && typeof b === 'number') {
    return a + b;
  }
  if (typeof a === 'string' && typeof b === 'string') {
    return a + b;
  }
  throw new Error('Типы аргументов должны совпадать');
}

Сравнение популярных AI-инструментов для генерации кода

Инструмент Поддержка JS/TS Качество генерации Бесплатный доступ Особенности
GitHub Copilot Отличная Высокое Нет (платная подписка) Интеграция с IDE, контекст проекта
ChatGPT (GPT-4) Хорошая Высокое Частично (бесплатный лимит) Универсальность, объяснение кода
Claude (Anthropic) Хорошая Высокое Частично (бесплатный лимит) Длинные контексты, безопасность
Tabnine Отличная Среднее Есть бесплатный план Фокус на автодополнение
Codeium Отличная Высокое Есть бесплатный план Бесплатный для индивидуальных разработчиков

Заключение

Промты — это мост между вашим намерением и качественным кодом, сгенерированным AI. Правильно сформулированный запрос экономит время, уменьшает количество ошибок и ускоряет разработку. В этой статье я поделился 10 промтами, которые использую сам в работе с JavaScript и TypeScript. Они охватывают типичные задачи: от создания React-компонентов до написания тестов и документации.

Помните, что AI — это инструмент, а не замена мышлению. Всегда проверяйте сгенерированный код, адаптируйте его под свои нужды и не стесняйтесь экспериментировать с формулировками промтов. Чем точнее запрос, тем лучше результат.

Если вы хотите углубиться в тему и научиться создавать эффективные промты для различных сценариев, обратите внимание на специализированные курсы и ресурсы. Например, ASI Biont поддерживает подключение к различным AI-сервисам через API — подробнее на asibiont.com/courses. Удачи в разработке!

← Все статьи

Комментарии

Читайте также

Что мы узнали, воспроизведя 2200 статей ICML: главные уроки для разработчиков ML

15 августа 2026

Kubernetes в production: как освоить продвинутые навыки SRE и GitOps с курсом Asibiont

15 августа 2026

Knowledge Distillation становится доступной: как радикально снизить стоимость обучения компактных моделей

15 августа 2026

Интеграция Kraken с AI-агентом ASI Biont: автоматизация криптоторговли без кода

15 августа 2026

WeatherNext: ИИ-модель совершает прорыв в прогнозировании циклонов

15 августа 2026

Курс «Психология и когнитивная наука»: освойте навыки будущего 2026 с помощью ИИ-обучения

15 августа 2026

Baseten на Hugging Face Inference Providers: как это упрощает развертывание ИИ-моделей

15 августа 2026

Курс ISO 14001 (Экологический менеджмент): Освойте экологический менеджмент, аудит и подготовку к сертификации с Asibiont

15 августа 2026

Курс «CRM и Salesforce — управление взаимоотношениями с клиентами»: с нуля до востребованного специалиста

15 августа 2026