tgoop.com/prog_way_blog/248
Create:
Last Update:
Last Update:
Лучшие практики типизации
В рамках ведения проектов и код-ревью я частенько натыкаюсь на странности написания TypeScript кода. В этом посте я постарался собрать самые частые ошибки, на которые точно стоит обратить внимание.
1. Лишний контекст
// плохо
type Person = {
personName: string;
personAge: string;
}
// замечательно
type Person = {
name: string;
age: string;
}
2
. enum
везде. Даже там, где не нужно. Сила
enum
заключается в том, что помимо перечисления внутри контекста, enum
можно использовать в качестве типа. Если вы не планируете использовать перечисления как тип, а лишь маппите что-либо в рамках одной сущности, то используйте константные объекты:const Status = {
Success: 'success',
Fail: 'fail'
} as const;
Проблема использования
enum
гораздо глубже, чем может показаться на первый взгляд. Думаю, что ей можно посвятить отдельный пост.3. Злоупотребление
any
. Я не противник использования any
в случаях, где это действительно необходимо, но многие, даже высокого грейда разработчики, не понимают зачем конкретно он нужен. Прежде, чем воткнуть any
, пожалуйста, попробуйте использовать unknown
. Это сделает ваш код гораздо безопаснее.4. Использование
Definite Assertion
оператора. Это когда вы утверждаете оператором восклицательного знака !
, что значение точно есть, хотя оно может быть и undefined
:// так делать не нужно, лучше добавить дополнительное условие
const foo = (arg?: string) => parseInt(arg!)
5. Злоупотребление оператором
as
. Ровно та же проблема, что с any
. Самый частый пример, что мне доводилось видеть:type Person = {
name: string
}
// плохо
const person = {
name: "Denis"
} as Person
// замечательно
const person: Person = {
name: "Denis"
}
6. Отдельным и крайне важным для меня пунктом выделю оформление
enum
. Согласно всем стайл-гайдам мира, enum
— сущность, группа, в единственном числе, оформленная определенным образом.// плохо
enum OPERATION_STATUS {}
enum STATUSES {}
enum STATUS {}
enum HTTPStatus {}
// замечательно
enum OperationStatus {}
enum Status {}
enum HttpStatus {}
Обратите внимание на то, что
Http
я написал не капсом. Аббревиатуры в названии любых переменных оформляются именно так, а не как HTTP
. Также название enum
-a пишется в PascalCase
. Таким же образом оформляются и ключи enum
-a:// плохо
enum Status {
SUCCESS,
FAIL
}
// замечательно
enum Status {
Success,
Fail
}
Это самые частые ошибки, что мне приходилось комментировать. Все эти правила можно прочитать в официальном TypeScript Handbook и Google JavaScript Style Guide. Это не мои выдумки — это правила, закреплённые индустрией.
Спасибо за прочтение, это важно для меня ❤️
@prog_way_blog — чат — #web #theory #typescript
BY progway — программирование, IT
Share with your friend now:
tgoop.com/prog_way_blog/248