Książka „TypeScript na poważnie”
Informacje o książce znajdziesz tutaj: https://typescriptnapowaznie.pl
Dołożyłem wszelkich starań, aby w niniejszej książce znalazły się wyłącznie informacje rzetelne i sprawdzone. Przetestowałem każdy fragment kodu i każdy przykład. Pomimo tego, może się tak zdarzyć, że gdzieś wkradły się błędy.
Jeśli znajdziesz jakiekolwiek pomyłki, to proszę, koniecznie mi to zgłoś! Możesz to zrobić poprzez tę stronę (w sekcji komentarzy). W przyszłości znajdziesz tu również wypisane poprawki, które do książki zostały wprowadzone już po premierze, aby łatwiej Ci było się z nimi zapoznać.
Wersja papierowa 43.1.0-0-g84d034d . Literówka.
Rozdział 3.11 Niestandardowe elementy języka:
„… Wśród nich należy wymienić:
-dekoratory,
-własności klasm ” – „m” zamiast przecinka
Str. 48
Tutaj ??, więc zakładam (może błędnie), że miały być tutaj podane w których rozdziałach, lub też nadmiarowe znaki zapytania?
Ta sama strona 48
Tutaj @todo, zakładam, że miały być materiały na potem, ale autor zapomniał dodać?
Poprawione
Cześć,
Wydaje mi się, że jest jakiś problem z epub – większość kodu nie jest renderowane pod Apple Books. Dałoby radę przegenerować plik?
Strona 32 w pdf, ostatnie zdanie przed podsumowaniem cytując:
Zamiast ?? powinien być numer rozdziału.
Poprawione
Str. 49
Brak podania numeru rozdziału.
Poprawione
„robię zakłopotana mine I odpowiadam że *NIE* znam niczego konkretnego” zjadłeś „NIE
Poprawione
Patrz screen
[…] do wersji drukowanej. Raz zleconego druku nie można już później poprawić, a errata online to fajny bonus, ale za mało, żeby pozwolić na wydruk z oczywistymi […]
ROZDZIAŁ 7.4.2
przykład:
const ex: Example = {
cannotUpdateMe: „abc”,
};
// 1
ex.optionalProperty = 123; // OK
1007.4 Interfejs
// 2
ex.cannotUpdateMe = „a”; // Błąd!
brakuje readonly przy connotUpdateMe oraz brakuje pola optionalProperty?.
Niczego nie brakuje, wszystko jest ok 🙂 Cały kod wygląda tak:
Rozdział 1.5,
W tym kontekście „za pewne” powinno być łącznie.
Poprawione
Kindle paperwhite 3 wypluł ?? zamiast numeru rozdziału tak jak na screenie.
Poprawione
Kindle paperwhite 3 – ten snippet kodu jest przełamany do nowej linii w środku nazwy argumentu. Być może kwestia jakichś parametrów przy tworzeniu mobi – nie mam pojęcia, ale było by ciut czytelniejsze.
4.2 Dynamiczne typowanie
Powinno być „kod” – w liczbie mnogiej.
Mobi loc 1082
Poprawione
//1 a powinno być //2
Wylogowałeś źle, ale poniżej wytłumaczone jest git.
4.4 słabe typowanie
Poprawione
Str. 119
Tutaj nie napisałem val: number , a mimo to TypeScript dokład-
nie „wiem”
chyba jednak TypEscript dokładnie „wie” 🙂
Poprawione
W sumie pierdoła.
Strona 57
Co prawda poniżej piszesz, że wynikiem jest 2, ale błąd pozostaje 😛
Poprawione
[3.6.1] W obu fragmentach kodu jest ta sama literówka:
Poprawione
[4.4] Przykład słabego typowania:
W komentarzu powinna być liczba 2. Błąd znajduje się tylko w kodzie, opis podaje już prawidłowy wynik.
Poprawione
[6.5][9.5]
Typem zwracanym powinien być
boolean
.Poprawione
[6.9]
Zamiast
config
powinno byćoverrides
. Ta sama funkcja pojawia się w 6.9.1, ale nie zawiera już tego błędu.Poprawione
[7.5]
Z tego fragmentu wynika, że
User
opisuje statyczne pola i funkcje, atypeof User
instancje klasyUser
. Tymczasem jest dokładnie odwrotnie 🙂Poprawione
[10.4] W kodzie mamy dwie klasy:
Player
iHero
. Tekst odwołujący się do tego przykładu mówi jednak o klasachPlayer
iAnimal
:Poprawione
Czytam epuba przez books na iOS 13.6.1 i nie ładują się przykłady kodu dla TS (JS są widoczne).
PDF / Rozdział 6.9 Przeładowywanie funkcji
Drugi blok „if”:
chyba powinno być:
Powołując się na stosowanie dobrych praktyk programowania przykłady w rozdziałach 6.9 i 6.9.1 (oraz wszystkich o podobnym zapisie) powinny wyglądać w sposób następujący:
PDF / Rozdział 4.4 Słabe typowanie
Jest:
Powinno być:
[7.4.4]
Niemożliwe jest uruchomienie kodu z przykładu. IDE poprawił kod do poniższej postaci, i dopiero to działa:
[8.4]
Kod po przeróbkach, który udało się uruchomić:
Jest problem, z plikami 'epub' na Macu z iBooks nie pojawia się większość wstawek z przykładowym kodem. Da się coś z tym zrobić?
str. 97
7.3
Sądzę, że powinno być abstract
ksiazka drukowana:
str.48 – drugi <ul>, drugi <li> – klasm (literowka)
str. 120 – const arr / const objects – skoro dopisujemy tylko typ to czy nie lepiej byloby zostawic nazwe zmiennej bez zmian?
str. 72
dla podanego typu z wartościami low, medium, high, Level byłoby lepszą nazwą niż Name
s. 221 Wyrażenie ze środka pierwszego akapitu, że „przykład napotkał mnie” jest nieintencjonalnie zabawne 🙂 Dlatego, że jeśli już, to raczej Michał napotkał przykład, a nie przykład napotkał Michała. Chociaż najlepiej gdyby to zdanie brzmiało troszkę inaczej, np.: „[…] przykładowi wziętemu z życia, który znam z pracy […]”.
s. 320 możemy pobrać stworzyć typ
if (typeof overrides === 'object') { return { …DEFAULT_CONFIG, …overrides }; }
Jednak w wersji TS przez definicję typu Arg działa to już zupełnie inaczej. Mamy możliwość przekazania obiektu tylko z polem enc. Jeśli spróbujemy nadpisać DEFAULT_CONFIG to walnie błędem.
type Arg = { enc: string } | string | undefined;
Nie lepiej jest to otypować w ten sposób? Dzięki temu pierwszy warunek z getConfig działa tak jak w pierwotnej wersji
type Config = { in: string; out: string, [key: string]: unknown };
type Arg = Record<string, unknown> | string | undefined;