Errata #155
Replies: 37 comments 19 replies
Str. 48 Do niektórych rzeczy (np. async) jeszcze wrócimy w późniejszych rozdziałach. ?? Pozostałych punktów nie omawiałem tutaj, gdyż nie starczyłoby na wszystko miejscaTutaj ??, 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 Dociekliwe(-i) na pewno będą chciały(-eli) doczytać, żeby dowie- dzieć się jak najwięcej. A może już to zrobili? Tak, czy inaczej, oto lista polecanych przeze mnie zasobów, z których warto się uczyć: @todoTutaj @todo, zakładam, że miały być materiały na potem, ale autor zapomniał dodać? Komentarz zaimportowany z WordPressa |
Str. 49 Ponieważ jednak niektóre popularne biblioteki zdecydowały się na oparcie swojego działania o dekoratory (np. Angular), nie mogłem ich zupełnie pominąć. O tym, jak działają dekoratory w TS dowiesz się w rozdziale ??Brak podania numeru rozdziału. Komentarz zaimportowany z WordPressa |
ROZDZIAŁ 7.4.2 brakuje readonly przy connotUpdateMe oraz brakuje pola optionalProperty?. Komentarz zaimportowany z WordPressa |
Rozdział 1.5, Gdyby statyczne i dynamiczne typowanie chcieć opisać dwoma innymi słowami, to za pewne byłyby to „pewność” i „niepewność”.W tym kontekście "za pewne" powinno być łącznie. Komentarz zaimportowany z WordPressa |
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. Komentarz zaimportowany z WordPressa |
Typowy przykład słabego typowania w akcji: const a = "3" - 1; // 1 const a = "3" + 1; // '31' W pierwszym przykładzie od ciągu znaków ‘3’ próbujemy odjąć liczbę 1 . Wynikiem jest liczba 2. //1 a powinno być //2 4.4 słabe typowanie Komentarz zaimportowany z WordPressa |
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: function getConfig(overrides) {
if (typeof overrides === "object") {
return {...DEFAULT_CONFIG, ...overrides};
}
if (typeof overrides === "string") {
return {...DEFAULT_CONFIG, enc: overrides};
}
if (typeof overrides === "undefined") {
return DEFAULT_CONFIG;
}
throw new Error("Invalid config provided!");
}
Komentarz zaimportowany z WordPressa |
[7.4.4] interface Queue {
push(val: string): void;
pop(): string | undefined;
}
class ArrayQueue implements Queue {
private array: Array = [];
push(val: string): void {
this.array.push(val);
}
pop(): string | undefined {
return this.array.pop();
}
}
[8.4] interface Queue {
push(val: T): void;
pop(): T | undefined;
}
class ArrayQueue implements Queue {
private array: Array = [];
push(val: T): void {
this.array.push(val);
}
pop(): T | undefined {
return this.array.pop();
}
}
const tab = new ArrayQueue();
tab.push('A');
tab.push('B');
tab.push('C');
console.log(tab.pop())
Komentarz zaimportowany z WordPressa |
ksiazka drukowana:
|
Wersja papierowa 43.1.0-0-g84d034d . Literówka. Komentarz zaimportowany z WordPressa |
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 [...]". Komentarz zaimportowany z WordPressa |
@4 Cześć, zastanawia mnie przykład z 6.9. W funkcji getConfig bez typów mamy możliwość nadpisywania własności DEFAULT_CONFIG i dodawania nowych dzięki temu warunkowi: Komentarz zaimportowany z WordPressa |
7.4.3. Wywoływalne i konstruowalne interfejsy (str. 99) interface Callable {
render(name: string): boolean;
inject: Array;
}
Napisałeś, że interfejs Callable opisuje funkcję, która posiada właściwość inject. W rzeczywistości opisuje on obiekt z metodą render() i właściwością inject. Dla funkcji z właściwością powinno być: interface Callable {
(name: string): boolean;
inject: Array;
}
Komentarz zaimportowany z WordPressa |
Druk 43.1.0-0-g84d034d function validateInvoiceResponse(
response: any
): response is InvoiceResponse {
if (!invoices || !Array.isArray(invoices)) {
return false;
}
return invoices.every((invoice) =>
invoice &&
invoice.id &&
typeof invoice.id === "string" &&
invoice.userId &&
typeof invoice.userId === "string" &&
invoice.amount &&
typeof invoice.amount === "number" &&
invoice.currency &&
typeof invoice.currency === "string"
);
}
Zamiast invoices powinno być response.
Komentarz zaimportowany z WordPressa |
|
Drobne sugestie:
|
|
Punkt 3.11. W drugim podpunkcie brakuje przecinka, a zamiast niego jest literka m. własności klasm |
Uh oh!
There was an error while loading. Please reload this page.
Errata
https://typeofweb.com/errata
All reactions