Skip to content

Commit a76f430

Browse files
committed
fix function overload description
1 parent 78ebd52 commit a76f430

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

modules/20-functions/85-function-overloads/description.ru.yml

+7-7
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ theory: |
99
function concat(a: number, b: number): string;
1010
function concat(a: string, b: string): string;
1111
12-
function concat(a: any, b: any): string {
13-
if (typeof a === 'string') {
14-
return `${a}${b}`;
15-
} else {
12+
function concat(a: unknown, b: unknown): string {
13+
if (typeof a === 'number') {
1614
return `${a.toFixed()}${b.toFixed()}`;
1715
}
16+
17+
return `${a}${b}`;
1818
}
1919
2020
concat('one', 'two'); // onetwo
@@ -24,9 +24,9 @@ theory: |
2424
2525
Здесь определяется одна функция `concat()`, у которой две версии, одна принимает на вход два числа, другая две строки. Обе версии выполняют конкатенацию, но делают это по-разному. Строки конкатенируются сразу, а вот у чисел сначала отбрасывается дробная часть.
2626
27-
Реализация поведения для обеих версий делается в третьей функции с тем же именем, но с таким описанием параметров, которое подойдет под каждую версию функции. В примере выше типы параметров определены как `any`, что дает возможность вызывать функцию как со строками, так и с числами.
27+
Реализация поведения для обеих версий делается в третьей функции с тем же именем, но с таким описанием параметров, которое подойдет под каждую версию функции. В примере выше типы параметров определены как `unknown`, что дает возможность вызывать функцию как со строками, так и с числами.
2828
29-
Вся логика, для всех версий функций описывается в этом последнем определении. То по какой ветке идти, делается с помощью проверки типов. В примере выше достаточно проверить тип только первого параметра, так как второй в таком случае точно будет строкой. Это обеспечивает система типов и компилятор.
29+
Вся логика для всех версий функций описывается в этом последнем определении. То по какой ветке идти, делается с помощью проверки типов. В примере выше достаточно проверить тип только первого параметра, так как второй в таком случае точно будет строкой. Это обеспечивает система типов и компилятор.
3030
3131
Перегрузка функций не ограничивается двумя версиями. Версий может быть сколько угодно, главное то, что в конце всегда описывается функция, которая является общей по параметрам для всех вариантов и внутри которой описывается вся логика для каждого варианта.
3232
@@ -36,7 +36,7 @@ theory: |
3636
function add(a: string, b: string): string;
3737
3838
// Сигнатура подходит под все примеры выше
39-
function add(a: any, b: any, c?: number): unknown {
39+
function add(a: unknown, b: unknown, c?: number): unknown {
4040
// тут вся логика
4141
if (c === undefined) {
4242
// ...

0 commit comments

Comments
 (0)