tel-ran-de / FE-24-m

2 stars 0 forks source link

FE 2022-08-03 TypeScript Generics #48

Open Nolra opened 2 years ago

Nolra commented 2 years ago

Код занятия: https://github.com/tel-ran-de/FE-24-m/tree/fe-08-03-typescript-generics Повторяем теорию https://habr.com/ru/post/455473 https://habr.com/ru/company/tinkoff/blog/588655 https://typescript-handbook.ru/docs/ts-4

Задача типизировать функцию, которая печатает имя человека, членов семьи или знаменитостей, переданных ей Соответственно создайте три интерфейса, каждый из них должен иметь свойство name, сделайте интерфейс People и пусть от него расширяются другие интерфейсы Celebrity extends People, которые должны иметь это свойство.

Общая функция printName, которую мы создали, примет любой объект, который расширяет People <T extends People>. Другими словами, вы можете передать объект члена семьи, просто человека или объект знаменитости этой функции, и он напечатает свое имя без каких-либо претензий. Вы можете определить еще много интерфейсов, и до тех пор, пока у них есть свойство name, вы сможете использовать функцию printName без каких-либо проблем.

 function printName(theInput){
     console.log(`My name is ${theInput.name}`);
 }
 let serena = {
     name: 'Serena Williams',
     profession: 'Tennis Player'
 }
 printName(serena);