diff --git a/src/task_2/index.ts b/src/task_2/index.ts index 06535aa..62464e2 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(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 = emailToCheck; + } + } + 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..3566c5f 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 +console.log(getProperty(x, "m"));