Laboratorium 9
Transkrypt
Laboratorium 9
Laboratorium 9 - TypeScript https://www.typescriptlang.org/docs/tutorial.html Zadanie 1 – Hello World a) Tworzymy plik hello.ts, który korzystając z prostej funkcji wyświetli dowolny napis: • w konsoli, uruchamiając w Node.js plik hello.js ALBO • w pliku HTML – trzeba dodać plik HTML i wczytać skrypt hello.js. Kompilacja: tsc hello.ts ALBO zrobi to za nas edytor :) Widać jakieś różnice między plikami TypeScript i JavaScript? b) Do funkcji dodać parametr imie typu string i wyświetlić odpowiednie przywitanie. Kompilator powinien zastosować kontrolę typów (dla imienia 123 będzie błąd :) Zadanie 2 – funkcja, tablice, pętle Napisać funkcję tabliczka() przyjmującą dwie tablice (typu string i number), która wyświetli jakby tabliczkę mnożenia (bardziej chyba tabliczkę „złożenia”) z zawartości dwóch tablic. Przykładowo dla tablic: ['as', 'Ala', 'kot'] oraz [1, 12, 9, 100] otrzymamy: as1 as12 as9 as100 Ala1 Ala12 Ala9 Ala100 kot1 kot12 kot9 kot100 Wykorzystać dwa rodzaje pętli z TypeScript: https://www.typescriptlang.org/docs/handbook/iterators-and-generators.html Zadanie 3 – interfejs, pętla, odwrotny apostrof • Utworzyć inferfejs Osoba zawierający trzy pola (imie, nazwisko, wiek) odpowiednich typów. • Utworzyć następnie tablicę trzech osób. • Utworzyć funkcję osobyInfo() przyjmującą jeden parametr – tablicę zmiennych typu Osoba. Funkcja ma zwracać napis (string) zawierający informację o wszystkich osobach. Wykorzystać zapis odwrotnego apostrofu. Wywołanie: console.log( osobyInfo(osoby) ); może zwrócić: Osoba: Jan Kowalski ma 18 lat. Osoba: Marek Pawlik ma 34 lat. Osoba: Ludwika Marchewka ma 29 lat. Zadanie 4 – klasa, metody dostępowe, … • Utworzyć klasę Student zawierającą prywatne pola: imie, nazwisko, dataUr, opis. • Warto skorzystać ze skróconego zapisu konstruktora: (private imie: string, ...) • Do pól imie oraz nazwisko dodać metody dostępowe (set i get). • Utworzyć plik kompilacji tsconfig.json ustalając domyślnie kompilację na „es5”. Przetestować tworząc obiekt klasy, zmieniając zawartość nazwiska, wyświetlając obiekt w konsoli. Do klasy dodać dwie publiczne metody: • consoleLog() - wyświetla zawartość wszystkich atrybutów obiektu klasy w konsoli • opisHTML() - zwraca ciąg znaków prezentujący ładny opis studenta (jakiś nagłówek, paragraf …). Przetestować dołączając zwrócony opis studenta to ciała dokumentu HTML. Zadanie 5 – lista studentów Rozwijamy zadanie poprzednie. • Utworzyć tablicę trzech studentów, np.: new Student('Robert','Kowalski','1992/02/28','Uzdolniony informatyk, szczególnie w ...'), new Student('Zosia','Bak','1991/06/12','Szczególne zainteresowania: grafika komputerowa'), new Student('Wojciech','Jablonski','1989/06/12','Trzeci raz powtarza 2 rok …') • Utworzyć klasę Grupa zawierającą: ◦ prywatne pole składowe przechowujące listę studentów danej grupy, ◦ konstruktor przyjmujący tablicę studentów, która będzie w danej grupie, ◦ metodę pokazListe() zwracającą listę studentów w HTML (tylko imię i nazwisko), ◦ metodę wybranyStudent(idStud) zwracającą obiekt wybranego studenta z tablicy Utworzyć obiekt klasy Grupa i przetestować metody w pliku HTML. Zadanie 6 Na jednej stronie HTML wyświetlić: • listę studentów (na górze strony) • opis tego studenta, którego kliknięto na liście (poniżej listy). Wykorzystać odpowiednie metody utworzone wcześniej w obu klasach. Po wczytaniu strony opis powinien być pusty. Przykład: Można skorzystać z poniższego szablonu, choć pewnie większość z Państwa potrafi zrobić to znacznie lepiej. Można użyć jQuery choć wystarczy JavaScript :) <body> <h1>Lista studentów</h1> <div id="lista"></div> <h1>Opis wybranego studenta</h1> <div id="opis"></div> <script src="zad56.js"></script> <script> startApp(); </script> </body> Zadanie 7 – TypeScript i Node.js – aplikacja konsolowa • Do aplikacji w TypeScript z zadanie 6 dodać obsługę Node.js. Wykorzystać odpowiednie definicje (*.d.ts) i dyrektywy kompilatora. • Korzystając z modułu readline z Node.js utworzyć proste menu tekstowe, które pozwoli na przegląd grupy studentów, modyfikację danych wybranego studenta i zapisanie ich do pliku JSON o podanej nazwie. Ewentualnie można zrobić to samo korzystając z formularzy HTML.