Sebuah tanda tangan indeks menggambarkan jenis sifat ketika Anda tidak mengetahui nama mereka sebelumnya — memodelkan kamus/peta di mana kunci bersifat dinamis.
{
[: ]: ;
}
: = { : , : };
scores. = ;
scores.;
scores.;
Sebuah tanda tangan indeks menggambarkan jenis sifat ketika Anda tidak mengetahui nama mereka sebelumnya — memodelkan kamus/peta di mana kunci bersifat dinamis.
{
[: ]: ;
}
: = { : , : };
scores. = ;
scores.;
scores.;
Dengan tanda tangan indeks biasa, kompiler menganggap setiap kunci ada, jadi scores.typo diketik sebagai number meskipun sebenarnya undefined pada saat runtime. Mengaktifkan noUncheckedIndexedAccess memperbaikinya:
// 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
}
Semua sifat yang dinamai harus dapat ditugaskan ke jenis nilai tanda tangan indeks.
type Scores = Record<string, number>; // same as the index signature
type Roles = Record<"admin" | "user", boolean>; // constrained keys
Record adalah singkatan idiomatis dan mendukung penyatuan kunci terbatas, yang tidak dapat dilakukan oleh [key: string] biasa.
Tanda tangan indeks memodelkan objek dengan kunci yang benar-benar dinamis (tabel pencarian, cache, peta JSON yang diurai).
Ketahui peringatan keselamatan (noUncheckedIndexedAccess) dan lebih suka Record<K, V> untuk keterbacaan — dan lebih suka Map ketika kunci benar-benar terbuka dan Anda menginginkan semantik iterasi/ukuran yang sebenarnya.