📖 Teorija
Namų darbas — patikima riba
Namų darbas — patikima riba.
- Tipo sargas.
src/lib/api.tsparašykisApod(value: unknown): value is Apodirrequest(): Promise<unknown>.fetchPicturesgrąžinkdata.filter(isApod). - Įrodyk skylę. Laikinai pakeisk
requestgrąžinimą įPromise<any>ir priskirk tiesiogiaiconst pics: Apod[] = data. Kompiliatorius tyli. Grąžinkunknown— dabar reikalauja sargo. Tai ir yra skirtumas tarp „tikiuosi" ir „patikrinau". - Sulaužyk API. Imituok pakeistą atsakymą (pvz. objektą be
url). Su sargu jis tiesiog išfiltruojamas; be sargo — galerija bandytų rodytiundefinedir lūžtų. - Readonly.
state.tsgetState()grąžinkReadonly<AppState>. PabandykgetState().pictures = []— klaida. Pakeisk per veiksmą — veikia. - catch unknown.
errors.tstoMessage(error: unknown). Pabandykerror.messagebeinstanceof— klaida ('error' is of type 'unknown'). Pridėkinstanceof— ok.
Privalomi testai:
- Ribos testas: be sargo
unknownnekompiliuojasi kaipApod[]; su sargu — patikima. - Readonly testas: priskyrimas
getState()laukui nekompiliuojasi.
Atsiskaitymui: ekrano nuotraukos: (1) any vs unknown skirtumas (skylė), (2) Readonly priskyrimo klaida, (3) catch unknown reikalaujantis instanceof.
Toliau. Turim tvirtas ribas ir tipizuotą būseną. Bet iki šiol įjungėm tik pagrindinį griežtumą. 18 pamokoje pažiūrėsim, ką duoda griežtieji flag'ai:
noUncheckedIndexedAccess(masyvo indeksas gali būtiundefined),exactOptionalPropertyTypesirassertNever— išsamumo garantija, verčianti apdoroti kiekvieną sąjungos variantą.