ინდექსის ხელმოწერა აღწერს თვისებების ტიპს, როდესაც თქვენ არ იცით მათი სახელები წინასწარ — აყალიბებს ლექსიკონებს/რუკებს, სადაც გასაღებები დინამიკური არის.
{
[: ]: ;
}
: = { : , : };
scores. = ;
scores.;
scores.;
ინდექსის ხელმოწერა აღწერს თვისებების ტიპს, როდესაც თქვენ არ იცით მათი სახელები წინასწარ — აყალიბებს ლექსიკონებს/რუკებს, სადაც გასაღებები დინამიკური არის.
{
[: ]: ;
}
: = { : , : };
scores. = ;
scores.;
scores.;
ჩვეულებრივი ინდექსის ხელმოწერით, კომპილერი ვარაუდობს, რომ ყველა გასაღები არსებობს, ამიტომ scores.typo აკრეფილია number-ად მაშინაც კი, თუ ის რეალურად undefined არის runtime-ში. noUncheckedIndexedAccess ჩართვა აღმოფხვრის ამას:
// 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
}
ყველა დასახელებული თვისება უნდა იყოს ინდექსის ხელმოწერის მნიშვნელობის ტიპისთვის მინიჭებადი.
type Scores = Record<string, number>; // same as the index signature
type Roles = Record<"admin" | "user", boolean>; // constrained keys
Record არის იდიომატური მოკლე ხელი და მხარს უჭერს შეზღუდულ გასაղების გაერთიანებას, რომელიც ჩვეულებრივ [key: string] არ შეუძლია.
ინდექსის ხელმოწერა აყალიბებს უნივერსალურად დინამიური გასაღებიანი ობიექტებს (ძებნის ცხრილები, cache, parsed JSON რუკები).
იცოდეთ უსაფრთხოების გაფრთხების შენიშვნა (noUncheckedIndexedAccess) და უპირატეს Record<K, V> წაკითხვადობისთვის — და უპირატეს Map როდესაც გასაღებები ნამდვილად ღია და სიმართოვე გაიმეორებლობის/ზომის სემანტიკა გსურთ.
IT გასაუბრების კითხვების ბიბლიოთეკა დეტალური პასუხებით — Junior-დან Senior-მდე.
შემოწირულობა