ორივე შეუძლია ნებისმიერი მნიშვნელობის შენახვა, მაგრამ განსხვავდება უსაფრთხოებაში. any გამორთავს ტიპის შემოწმებას; unknown ინარჩუნებს მას და აიძულებს შეკუმშვას გამოყენებამდე.
ts
: = ;
a..;
();
: = ;
u.();
();
ორივე შეუძლია ნებისმიერი მნიშვნელობის შენახვა, მაგრამ განსხვავდება უსაფრთხოებაში. any გამორთავს ტიპის შემოწმებას; unknown ინარჩუნებს მას და აიძულებს შეკუმშვას გამოყენებამდე.
: = ;
a..;
();
: = ;
u.();
();
IT გასაუბრების კითხვების ბიბლიოთეკა დეტალური პასუხებით — Junior-დან Senior-მდე.
შემოწირულობაfunction handle(input: unknown) {
if (typeof input === "string") {
input.toUpperCase(); // ✅ inside the guard, TS knows it's a string
}
}
unknown არის any-ის ტიპ-უსაფრთხო ანალოგი: შეგიძლია მისკენ რაიმე მიანიჭო, მაგრამ არ შეგიძლია რაიმე გააკეთო მის ტიპის გვარდიის საშუალებით დამტკიცებამდე.
unknown — ნამდვილად უცნობი ტიპის მნიშვნელობებისთვის საზღვარზე: JSON.parse შედეგები, API პასუხები, catch (e: unknown). ის აიძულებს ვალიდაციას.any — გამოსახვის პროტყე როდესაც JS-ს გადაიტანებთ ან როდესაც მართლა ვერ შეძლებთ რაიმის ტიპირებას. გამოიყენეთ იშვიათად; ის ჩუმად ვრცელდება და გამორთავს უსაფრთხოებას.any-ისკენ მიმართვა ანიშნავს TypeScript-ის მიზნის დამარცხებას.
უპირატესობა ენიჭოს unknown-ს აკრეფილი საზღვრებზე — ის ინარჩუნებს კომპილატორის გარანტიებს, ხოლო მაინც იღებს თვითნებურ შეყვანას, თქვენ აიძულებთ მონაცემების ვალიდაციას მანამდე, სანამ მათ დაენდობით.