Az index szignatúra leírja a tulajdonságok típusát, ha előzetesen nem ismered azok nevét — szótárak/térképek modellezésére szolgál, ahol a kulcsok dinamikusak.
{
[: ]: ;
}
: = { : , : };
scores. = ;
scores.;
scores.;
Az index szignatúra leírja a tulajdonságok típusát, ha előzetesen nem ismered azok nevét — szótárak/térképek modellezésére szolgál, ahol a kulcsok dinamikusak.
{
[: ]: ;
}
: = { : , : };
scores. = ;
scores.;
scores.;
Egy sima index szignatúrával a fordító azt feltételezi, hogy minden kulcs létezik, így a scores.typo number típusúként van tipizálva, még akkor is, ha valójában undefined futási időben. A noUncheckedIndexedAccess engedélyezése ezt kijavítja:
// with noUncheckedIndexedAccess: true
scores.math; // number | undefined → forces you to handle the missing case
interface Config {
name: string; // known property
[key: string]: string | number; // plus arbitrary extra keys
}
Az összes nevesített tulajdonságnak hozzárendelhetőnek kell lennie az index szignatúra értéktípusához.
type Scores = Record<string, number>; // same as the index signature
type Roles = Record<"admin" | "user", boolean>; // constrained keys
A Record az idiomatikus rövidítés, és támogatja a korlátozott kulcs uniót, amelyet egy sima [key: string] nem tud.
Az index szignatúra valóban dinamikus kulcsú objektumokat modellez (keresési táblázatok, gyorsítótárak, elemzett JSON térképek).
Ismerje meg a biztonsági figyelmeztetést (noUncheckedIndexedAccess), és az olvashatóság érdekében preferálja a Record<K, V> megoldást — és preferálja a Map megoldást, amikor a kulcsok valóban nyitottak, és valódi iteráció/méret szemantikát szeretne.
IT interjúkérdések gyűjteménye részletes válaszokkal — Juniortól Seniorig.
Adományozás