feat: add mapped types in ts section
This commit is contained in:
@@ -340,4 +340,4 @@ test('My first test', async t => {
|
||||
});
|
||||
```
|
||||
|
||||
🚀 **Источник: [https://open.zeba.academy/testirovanie-prilozheniy-react-luchshie-praktiki-instrumenty/](https://open.zeba.academy/testirovanie-prilozheniy-react-luchshie-praktiki-instrumenty/)**
|
||||
🚀 **Источник: [Тестирование приложений React: Лучшие практики и инструменты](https://open.zeba.academy/testirovanie-prilozheniy-react-luchshie-praktiki-instrumenty/)**
|
||||
36
docs/typescript/06-mapped-types.md
Normal file
36
docs/typescript/06-mapped-types.md
Normal file
@@ -0,0 +1,36 @@
|
||||
---
|
||||
sidebar_position: 6
|
||||
---
|
||||
|
||||
# Mapped types
|
||||
|
||||
**Mapped Types** в TypeScript позволяют создавать новые типы на основе существующих, применяя преобразования к каждому свойству.
|
||||
|
||||
🚀**Mapped Types** помогают гибко манипулировать типами, уменьшая дублирование кода.
|
||||
|
||||
## Основные возможности:
|
||||
1. **Итерация по ключам** \
|
||||
Можно перебрать ключи одного типа (**`keyof`**) и создать новый:
|
||||
```ts
|
||||
type Optional<T> = { [K in keyof T]?: T[K] };
|
||||
```
|
||||
Это сделает все свойства **`T`** необязательными.
|
||||
|
||||
2. **Модификаторы** (`readonly`, `?`) \
|
||||
Можно добавлять или удалять модификаторы:
|
||||
```ts
|
||||
type Readonly<T> = { readonly [K in keyof T]: T[K] };
|
||||
type Mutable<T> = { -readonly [K in keyof T]: T[K] }; // Удаляет `readonly`
|
||||
```
|
||||
|
||||
3. **Фильтрация ключей** \
|
||||
Через **`as`** в TypeScript 4.1+ можно фильтровать или преобразовывать ключи:
|
||||
```ts
|
||||
type OnlyStrings<T> = { [K in keyof T as T[K] extends string ? K : never]: T[K] };
|
||||
```
|
||||
|
||||
Примеры встроенных mapped types:
|
||||
- `Partial<T>` – все свойства необязательные.
|
||||
- `Required<T>` – все свойства обязательные.
|
||||
- `Pick<T, K>` – выбирает только указанные ключи `K` из `T`.
|
||||
- `Record<K, V>` – создаёт тип с ключами `K` и значениями `V`.
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 6
|
||||
sidebar_position: 7
|
||||
---
|
||||
|
||||
# Type guards
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 7
|
||||
sidebar_position: 8
|
||||
---
|
||||
|
||||
# Enums и as const
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 8
|
||||
sidebar_position: 9
|
||||
---
|
||||
|
||||
# Namespaces
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 9
|
||||
sidebar_position: 10
|
||||
---
|
||||
|
||||
# Декораторы
|
||||
Reference in New Issue
Block a user