tgoop.com/prog_way_blog/307
Create:
Last Update:
Last Update:
Определяющие тайпгарды
Как я и писал в одном из прошлых постов, тайпгарды есть двух видов: уточняющие и определяющие. Уточняющие попроще, их я разобрал как раз в прошлом посте.
Определяющие тайпгарды — это функции, которые позволяют уточнить тип unknown
переменной. Сразу рассмотрим пример и рассмотрим следующий интерфейс:
interface User {
name: string;
age: number;
roles: string[];
}
И представим, что в коде у нас есть некоторая переменная с неизвестным типом, которую мы хотим обработать:
const foo: any = ...
if (isUser(foo)) {
// обработать как пользователя
} else {
// обработать как что-то иное
}
Определяющие тайпгарды любую переменную воспринимают как
unknown
, это их ключевая особенность. Каждое свойство мы проверяем отдельно и таким образом, чтобы однозначно убедиться в его типе. Для интерфейса из примера, хороший тайпгард будет выглядеть так:function isUser(value: unknown): value is User {
const user = value as User;
return user !== null
&& typeof user === 'object'
&& typeof user.name === 'string'
&& typeof user.age === 'number'
&& Array.isArray(user.roles)
&& user.roles?.every(role => typeof role === 'string');
}
Это может выглядеть очень некрасиво, но главное, что работает)
На практике встречается не так часто, но тот самый раз, когда он будет нужен, будет спасительным для типобезопасности вашего кода. Такие тайпгарды позволяют легко избежать использования
any
типов и раскрыть возможности TypeScript
в полной мере. Спасибо за прочтение, это важно для меня ❤️
@prog_way_blog — чат — #theory #code #typescript
BY progway — программирование, IT
Share with your friend now:
tgoop.com/prog_way_blog/307