Обновлено:
Использование префиксов 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вместоIUserDetailPagePropsвместоIDetailPageProps
Итог
Префиксы I и T — это пережиток прошлого, который не имеет места в современной разработке на TypeScript. Избегайте их, чтобы писать чистый, читаемый и поддерживаемый код.
А вы используете префиксы в своих проектах?