Питання на співбесіді з TypeScript (Middle) з відповідями
75 запитань для співбесіди з теми TypeScript (Middle) - з правильними відповідями, поясненнями й посиланнями на документацію.
Пройти цей тест- 1.Що таке користувацький type guard?
- 2.Як гарантувати, що
switchобробив усі варіанти union? - 3.Що означає
<T extends { id: string }>у дженерику? - 4.Як типізувати функцію
getProp(obj, key), щоб результат залежав від ключа? - 5.Що таке зіставлений (mapped) тип?
- 6.Що робить умовний тип
T extends string ? 'text' : 'other'? - 7.Що робить
inferуtype ElementType<T> = T extends (infer U)[] ? U : never? - 8.Що поверне
Awaited<Promise<Promise<number>>>? - 9.Чим
Exclude<T, U>відрізняється відOmit<T, K>? - 10.Як працюють перевантаження функцій у TypeScript?
- 11.Що таке declaration merging?
- 12.Для чого потрібен абстрактний клас?
- 13.Чим
protectedвідрізняється відprivateу класах TypeScript? - 14.Що робить оператор
satisfies? - 15.Що таке шаблонні літеральні типи?
- 16.Чому замість
enumчасто використовують об'єктas const? - 17.Чим
const enumвідрізняється від звичайногоenum? - 18.Чим простори імен (
namespace) відрізняються від ES-модулів? - 19.Що таке функція-твердження (assertion function)?
- 20.Як отримати props нативної кнопки, щоб розширити їх у своєму компоненті?
- 21.Як типізувати хуки Redux Toolkit у застосунку на TypeScript?
- 22.Як типізувати дженерик-компонент списку?
- 23.Що робить
Extract<'a' | 'b' | 1 | 2, string>? - 24.Що поверне
NonNullable<string | null | undefined>? - 25.Чим
object,{}іRecord<string, unknown>відрізняються як типи? - 26.Як TypeScript обробляє оператор
inпід час звуження? - 27.Що роблять
-readonlyі-?у mapped type? - 28.Як перейменувати ключі в mapped type?
- 29.Чому
Object.keys(user)повертаєstring[], а не(keyof User)[]? - 30.Що дає прапорець
noUncheckedIndexedAccess? - 31.Чим
unknown[]відрізняється відany[]у параметрі функції? - 32.Що таке декоратори в TypeScript 5?
- 33.Що робить
import type { User } from './types'? - 34.Чим
interfaceкращий за перетин для розширення великих об'єктних типів? - 35.Що поверне
Parameters<(a: string, b?: number) => void>? - 36.Як указати тип
thisдля функції-обробника? - 37.Як краще типізувати відповідь API, якщо в різних статусів різна структура?
- 38.Що робить утиліта
ReadonlyArray<T>(абоreadonly T[])? - 39.Що таке
unique symbol? - 40.Як розширити тип глобального об'єкта
Windowз модуля? - 41.Як безпечно типізувати результат
JSON.parse? - 42.Чим
type A = Bвідрізняється відinterface A extends B {}для відображення в підказках IDE? - 43.Що дає
pathsуtsconfig.json? - 44.Чим
moduleResolution: 'bundler'відрізняється від'node16'/'nodenext'? - 45.Що робить прапорець
isolatedModules? - 46.Що робить
keyof typeof obj? - 47.Коли TS розширює літеральний тип до загального (widening)?
- 48.Як зробити параметр дженерика необов'язковим зі значенням за замовчуванням?
- 49.Як типізувати функцію-фабрику, що повертає той самий тип, який отримала?
- 50.Що таке контекстна типізація (contextual typing)?
- 51.Чому
Omit<Circle | Square, 'id'>втрачає дискриміноване об'єднання? - 52.Що дає
as const satisfies Record<string, Route>для об'єкта конфігурації? - 53.Коли параметр-об'єднання кращий за перевантаження?
- 54.Що таке parameter properties і чому це не «стираний» синтаксис?
- 55.Від чого захищають ключове слово
overrideіnoImplicitOverride? - 56.Чому
Readonly<Settings>може не запобігти такій зміні? - 57.Як отримати TypeScript-тип зі схеми Zod?
- 58.Що додає type-aware лінтинг typescript-eslint поверх
tsc? - 59.Як поділити одну строгу базову конфігурацію між багатьма пакетами?
- 60.Чим відрізняються
targetіlibуtsconfig.json? - 61.Що виправляє
esModuleInterop? - 62.Яка опція дає змогу
import config from './config.json'з типізованим вмістом? - 63.Як отримати тип екземпляра й аргументи конструктора класу?
- 64.Як звузити результати
Promise.allSettled? - 65.Що дозволяють вбудовані типи
Uppercase,Capitalizeтощо? - 66.Що ловлять
noImplicitReturnsіnoFallthroughCasesInSwitch? - 67.Як типізувати функцію-генератор?
- 68.Як типізувати узагальнений хук завантаження даних?
- 69.Коли
Map<K, V>кращий за об'єкт з індексною сигнатурою? - 70.Що роблять
types/typesVersionsі умова"types"вexportsфайлуpackage.json? - 71.Що робить
export type * from './types'(TS 5.0+)? - 72.Як описати тип для будь-якого JSON-значення?
- 73.Як реалізувати типобезпечний event emitter?
- 74.Чи працює звуження, якщо дискриміноване об'єднання спершу деструктуровано?
- 75.Що дає звуження в
switch (true)(TS 5.3)?