From e89912dd758ec6f442e16dd9a13140f4795a5678 Mon Sep 17 00:00:00 2001 From: diukin9 Date: Wed, 19 May 2021 16:40:56 +0500 Subject: [PATCH 1/2] =?UTF-8?q?=D0=94=D1=8E=D0=BA=D0=B8=D0=BD=20=D0=9F?= =?UTF-8?q?=D0=B5=D1=82=D1=80=20ts3=20(2=20=D0=BD=D0=BE=D0=BC=D0=B5=D1=80?= =?UTF-8?q?=D0=B0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/task_2/index.ts | 23 +++++++++++++++-------- src/task_4/index.ts | 9 ++++----- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/src/task_2/index.ts b/src/task_2/index.ts index 06535aa..b972196 100644 --- a/src/task_2/index.ts +++ b/src/task_2/index.ts @@ -1,14 +1,21 @@ -/** Задача 1 - * Реализовать декоратор, используя встроенную поддержку декораторов в TypeScript, - * который будет реагировать на присвоение в поле email значения. - * Когда присваивается корректный e-mail в консоль выводится сообщение email valid. - * Когда присваивается некорректный e-mail возбуждается ошибка. -*/ +function isValidEmail(target: Object, propertyKey: string): any { + let email: string; + let descriptor: PropertyDescriptor = { + set(newEmail: string) { + if (!/[a-zA-Z0-9]+@[a-zA-Z]+.[a-zA-Z]+/.test(newEmail)) + throw 'email is invalid' + console.log('email is valid'); + email = newEmail; + } + } + return descriptor; +} class Example { + @isValidEmail public email: string = ""; } let exampleInstance = new Example(); -exampleInstance.email = "fkkldfjg"; // генерирует эксепшен -exampleInstance.email = "misha@mail.ru"; // выводит в консоль e-mail valid +exampleInstance.email = "fkkldfjg"; +exampleInstance.email = "misha@mail.ru"; diff --git a/src/task_4/index.ts b/src/task_4/index.ts index dc0e179..c19c1ad 100644 --- a/src/task_4/index.ts +++ b/src/task_4/index.ts @@ -1,11 +1,10 @@ -/** Задача 4 - * Описать каким должен быть объект X, чтобы метод работал корректно -*/ - function getProperty(obj: T, key: K): T[K] { return obj[key]; } -const x = undefined; +//Здесь могло бы быть что угодно, но почему бы не оставить фамилию замечательного человека? +const x = { + m : "Обабков" +} console.log(getProperty(x, "m")); \ No newline at end of file From 91ada8f0945f803f82d602c30f0c7fc69c0e0d05 Mon Sep 17 00:00:00 2001 From: diukin9 Date: Wed, 19 May 2021 16:46:35 +0500 Subject: [PATCH 2/2] =?UTF-8?q?=D0=94=D1=8E=D0=BA=D0=B8=D0=BD=20=D0=9F?= =?UTF-8?q?=D0=B5=D1=82=D1=80=20ts3=20(2=20=D0=BD=D0=BE=D0=BC=D0=B5=D1=80?= =?UTF-8?q?=D0=B0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/task_2/index.ts | 6 +++--- src/task_4/index.ts | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/task_2/index.ts b/src/task_2/index.ts index b972196..62464e2 100644 --- a/src/task_2/index.ts +++ b/src/task_2/index.ts @@ -1,11 +1,11 @@ function isValidEmail(target: Object, propertyKey: string): any { let email: string; let descriptor: PropertyDescriptor = { - set(newEmail: string) { - if (!/[a-zA-Z0-9]+@[a-zA-Z]+.[a-zA-Z]+/.test(newEmail)) + set(emailToCheck: string) { + if (!/[a-zA-Z0-9]+@[a-zA-Z]+.[a-zA-Z]+/.test(emailToCheck)) throw 'email is invalid' console.log('email is valid'); - email = newEmail; + email = emailToCheck; } } return descriptor; diff --git a/src/task_4/index.ts b/src/task_4/index.ts index c19c1ad..3566c5f 100644 --- a/src/task_4/index.ts +++ b/src/task_4/index.ts @@ -2,9 +2,9 @@ function getProperty(obj: T, key: K): T[K] { return obj[key]; } -//Здесь могло бы быть что угодно, но почему бы не оставить фамилию замечательного человека? +//Здесь могло бы быть что угодно, но почему бы не оставить фамилию замечательного человека? :) const x = { m : "Обабков" } -console.log(getProperty(x, "m")); \ No newline at end of file +console.log(getProperty(x, "m"));