Почему префиксы I и T — это антипаттерн в TypeScript

Обновлено:

Использование префиксов I (для интерфейсов) и T (для типов) в TypeScript — это антипаттерн. Если вы до сих пор пишете IUser или TUserProfile, этот пост для вас.

Это отдельная тема от выбора между interface и type — о том, когда что использовать, читайте в статье «Typescript. Когда использовать interface, а когда type?».

Что не так с префиксами?

1. TypeScript не требует префиксов

TypeScript не делает различий между type и interface на уровне использования. Оба могут описывать формы данных, расширяться и реализовываться. Префиксы I и T не добавляют никакой пользы, только шум.

// Плохо
interface IUser {
  name: string;
}

type TUser = {
  name: string;
};

// Хорошо
interface User {
  name: string;
}

type User = {
  name: string;
};

2. Префиксы усложняют чтение кода

Префиксы добавляют визуальный шум и увеличивают длину имён. Вместо того чтобы писать IUser, лучше просто User. Это проще и понятнее.

// Плохо
function renderUserProfile(user: IUser): TUserProfile {
  // ...
}

// Хорошо
function renderUserProfile(user: User): UserProfile {
  // ...
}

3. Префиксы нарушают конвенции именования

В TypeScript принято использовать имена, которые отражают сущность, а не её тип. Например, если у вас есть компонент DetailPage, его пропсы логично назвать DetailPageProps. Префиксы I и T нарушают эту конвенцию.

// Плохо
interface IDetailPageProps {
  title: string;
}

// Хорошо
interface DetailPageProps {
  title: string;
}

4. Префиксы не помогают в понимании кода

Современные IDE (например, WebStorm, VSCode) предоставляют мощные инструменты для анализа типов. Вы можете легко узнать, является ли сущность типом или интерфейсом, наведя курсор на неё. Префиксы I и T не добавляют полезной информации.

5. Префиксы противоречат принципам TypeScript

TypeScript разработан с учётом минимализма и простоты. Префиксы I и T добавляют ненужную сложность, которая не соответствует философии языка.

Почему это важно?

  • Чистый код: Избегание префиксов делает код более читаемым и понятным.
  • Совместимость: Большинство современных библиотек и фреймворков (React, Angular, Vue) не используют префиксы. Следование этим стандартам делает ваш код более согласованным.
  • Простота: TypeScript и так предоставляет всё необходимое для работы с типами и интерфейсами. Префиксы только мешают.

Что использовать вместо префиксов?

Просто называйте типы и интерфейсы так, чтобы их имена отражали их сущность. Например:

  • User вместо IUser
  • DetailPageProps вместо IDetailPageProps

Итог

Префиксы I и T — это пережиток прошлого, который не имеет места в современной разработке на TypeScript. Избегайте их, чтобы писать чистый, читаемый и поддерживаемый код.

А вы используете префиксы в своих проектах?