From 00cbd1152c71fb4ca6a2c4b025cb0039338bdc30 Mon Sep 17 00:00:00 2001 From: realing29 Date: Sun, 8 Jan 2023 16:44:33 +0500 Subject: [PATCH] fix any to unknown --- .../20-functions/85-function-overloads/description.ru.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/modules/20-functions/85-function-overloads/description.ru.yml b/modules/20-functions/85-function-overloads/description.ru.yml index 61afc99d..168196ab 100644 --- a/modules/20-functions/85-function-overloads/description.ru.yml +++ b/modules/20-functions/85-function-overloads/description.ru.yml @@ -1,5 +1,4 @@ --- - name: Перегрузка функций (Function Overloads) theory: | @@ -9,7 +8,7 @@ theory: | function concat(a: number, b: number): string; function concat(a: string, b: string): string; - function concat(a: any, b: any): string { + function concat(a: unknown, b: unknown): string { if (typeof a === 'string') { return `${a}${b}`; } else { @@ -24,7 +23,7 @@ theory: | Здесь определяется одна функция `concat()`, у которой две версии, одна принимает на вход два числа, другая две строки. Обе версии выполняют конкатенацию, но делают это по-разному. Строки конкатенируются сразу, а вот у чисел сначала отбрасывается дробная часть. - Реализация поведения для обеих версий делается в третьей функции с тем же именем, но с таким описанием параметров, которое подойдет под каждую версию функции. В примере выше типы параметров определены как `any`, что дает возможность вызывать функцию как со строками, так и с числами. + Реализация поведения для обеих версий делается в третьей функции с тем же именем, но с таким описанием параметров, которое подойдет под каждую версию функции. В примере выше типы параметров определены как `unknown`, что дает возможность вызывать функцию как со строками, так и с числами. Вся логика, для всех версий функций описывается в этом последнем определении. То по какой ветке идти, делается с помощью проверки типов. В примере выше достаточно проверить тип только первого параметра, так как второй в таком случае точно будет строкой. Это обеспечивает система типов и компилятор. @@ -36,7 +35,7 @@ theory: | function add(a: string, b: string): string; // Сигнатура подходит под все примеры выше - function add(a: any, b: any, c?: number): unknown { + function add(a: unknown, b: unknown, c?: number): unknown { // тут вся логика if (c === undefined) { // ...