Skip to content

Commit 3771d03

Browse files
committed
add example
1 parent b4e8abe commit 3771d03

File tree

2 files changed

+38
-0
lines changed

2 files changed

+38
-0
lines changed

modules/50-objects/35-mapping-modifiers/description.ru.yml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,25 @@ theory: |
4343
};
4444
```
4545
46+
Благодаря таким типам легче далеть производные типы из уже имеющихся.
47+
48+
Например, в приложении может быть тип `User` для не авторизованного пользователя у которого все поля не обязательные:
49+
50+
```typescript
51+
type User = {
52+
id?: string;
53+
firstName?: string;
54+
secondName?: string;
55+
email?: string;
56+
};
57+
```
58+
59+
Из него можно сделать авторизованного пользователя с помощью типа `Required`:
60+
61+
```typescript
62+
type AuthorizedUser = Required<DefaultUser>;
63+
```
64+
4665
instructions: |
4766
4867
Реализуйте функцию `deepFreeze()`, которая принимает на вход объект и делает его самого, его поля и все вложенные объекты неизменяемыми и возвращает этот объект.

modules/50-objects/35-mapping-modifiers/ru/README.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,22 @@ type Mutable<T> = {
3737
-readonly [P in keyof T]: T[P];
3838
};
3939
```
40+
41+
Благодаря таким типам легче далеть производные типы из уже имеющихся.
42+
43+
Например, в приложении может быть тип `User` для не авторизованного пользователя у которого все поля не обязательные:
44+
45+
```typescript
46+
type User = {
47+
id?: string;
48+
firstName?: string;
49+
secondName?: string;
50+
email?: string;
51+
};
52+
```
53+
54+
Из него можно сделать авторизованного пользователя с помощью типа `Required`:
55+
56+
```typescript
57+
type AuthorizedUser = Required<DefaultUser>;
58+
```

0 commit comments

Comments
 (0)