اثنا عشر سؤالًا تغطي الدورة كلها. احصل على 70% أو أكثر لتنجح وتفتح شهادتك. يمكنك إعادته متى شئت.
أنهِ كل الدروس لتحصل على الشهادة، ويمكنك خوض الاختبار في أي وقت.
السؤال 1 من 12
أيّ زوج من التغييرات يجعل cancelOrder(customer.id) وadd(usdPrice, eurShipping) كليهما خطأ ترجمة؟
cancelOrder(customer.id)
add(usdPrice, eurShipping)
OrderId
CustomerId
add
add<C>(a: Money<C>, b: Money<NoInfer<C>>)
satisfies
exactOptionalPropertyTypes
noUncheckedIndexedAccess
cancelOrder
const
السؤال 2 من 12
ما نوع summary؟
summary
function pick<T, K extends keyof T>(obj: T, ...keys: K[]): Pick<T, K> { /* … */ } const summary = pick(order, 'id', 'status');
Partial<Order>
Order
Pick<Order, keyof Order>
Pick<Order, 'id' | 'status'>
السؤال 3 من 12
سلة محفوظة لعميل في localStorage كتبها إصدار العام الماضي من التطبيق، بشكل مختلف. ما الطريقة الصحيحة لتحميلها؟
localStorage
JSON.parse(saved) as Cart
JSON.parse(saved)
any
unknown
Result
السؤال 4 من 12
ما هو NoNulls<{ coupon: string | null; note?: string }>؟
NoNulls<{ coupon: string | null; note?: string }>
type NoNulls<T> = { [K in keyof T]: NonNullable<T[K]> };
{ coupon: string | null; note: string }
{ coupon: string; note?: string }
{ coupon: string; note: string }
never
السؤال 5 من 12
يضيف فريق المدفوعات 'requires-3ds' إلى الـ union المسمّى PaymentError. الدالة errorMessage(e: PaymentError): string تتفرّع على e.type دون default. ماذا يحدث؟
'requires-3ds'
PaymentError
errorMessage(e: PaymentError): string
e.type
default
errorMessage
undefined
السؤال 6 من 12
أيّ نص قابل للإسناد إلى type OrderPath = `/orders/${number}`؟
type OrderPath = `/orders/${number}`
'/orders/abc'
'/orders/'
'/orders/1042/lines'
'/orders/1042'
السؤال 7 من 12
بعد تفعيل noUncheckedIndexedAccess، أيّ سطر يصبح خطأ ترجمة (مع lines: Line[])؟
lines: Line[]
for (const line of lines) console.log(line.sku);
lines.map((line) => line.sku);
const [first] = lines; console.log(first.sku);
console.log(lines.length);
السؤال 8 من 12
زُخرفت charge بـ @retry(3) في السطر الذي فوق @logged. تفشل البوابة مرتين ثم تنجح. كم سطر تسجيل تطبع logged لاستدعاء واحد؟
charge
@retry(3)
@logged
logged
retry
السؤال 9 من 12
لماذا يمكن تمرير DetailedOrder (id وstatus وtotalCents وcustomer) حيث يُنتظر Order (id وstatus وtotalCents)، والعكس غير ممكن؟
DetailedOrder
id
status
totalCents
customer
extends Order
السؤال 10 من 12
أيّ توقيع هو تحويل غير مفحوص متنكّر؟
function sortByTotal<T extends { totalCents: number }>(orders: T[]): T[]
function call<R extends keyof Routes>(route: R): Routes[R]['output']
function indexById<T extends { id: number }>(items: T[]): Map<number, T>
function readSetting<T>(key: string): T
السؤال 11 من 12
ماذا يفعل declare module 'legacy-shipping-calc'; دون جسم؟
declare module 'legacy-shipping-calc';
@types
السؤال 12 من 12
أيّ ملف يجب أن تحوّله إلى TypeScript أولًا في عملية ترحيل؟
checkoutPage.js
money.js
12 سؤالًا بلا إجابة