Pytania rekrutacyjne TypeScript (Senior) z odpowiedziami
75 pytań na rozmowę rekrutacyjną z tematu TypeScript (Senior) - z poprawnymi odpowiedziami, wyjaśnieniami i linkami do dokumentacji.
Rozwiąż ten test- 1.Czy przy
strictFunctionTypesmożna przypisać(x: Dog) => voiddo zmiennej typu(x: Animal) => void? - 2.Dlaczego
strictFunctionTypesnie działa dla metody zadeklarowanej jakohandle(x: Dog): void? - 3.Czym jest
ToArray<string | number>, jeślitype ToArray<T> = T extends any ? T[] : never? - 4.Jak wyłączyć rozkładanie typu warunkowego na unię?
- 5.Dlaczego
type IsNever<T> = T extends never ? true : falsedajeneverdlaIsNever<never>? - 6.Jak zaimplementować
DeepPartial<T>? - 7.Po co są typy „branded”?
- 8.Jak zostawić tylko właściwości typu będące funkcjami?
- 9.Co zwraca
Split<'a/b/c'>? - 10.Czym są variadic tuple types?
- 11.Co daje modyfikator
constprzy parametrze typu (TS 5.0)? - 12.Do czego służy narzędzie
NoInfer<T>(TS 5.4)? - 13.Co robi
infer N extends numberw typie warunkowym? - 14.W jakiej kolejności pisać przeciążenia funkcji?
- 15.Jak dodać pole
userdo typuRequestbiblioteki Express? - 16.Czego wymaga flaga
verbatimModuleSyntax? - 17.Czego zabrania flaga
erasableSyntaxOnly(TS 5.8)? - 18.Do czego służą Project References (
references,composite)? - 19.Jakie jest ryzyko włączenia
skipLibCheck: true? - 20.Jak znaleźć przyczynę wolnego sprawdzania typów w dużym projekcie?
- 21.Czy można przekazać
readonly string[]do funkcji, która przyjmujestring[]? - 22.Co daje zwracany typ
thisw metodzie klasy? - 23.Do czego służą adnotacje wariancji
inioutprzy parametrach typu (TS 4.7)? - 24.Dlaczego szablonowy typ `
${A}-${B}-${C}` z trzech dużych unii może powodować błąd? - 25.Jak działa trik
UnionToIntersection? - 26.Dlaczego
Record<Status, string>jest przydatniejszy niż{ [k: string]: string }dla słownika według statusu? - 27.Co zmieniło się we wnioskowaniu predykatów typów w TS 5.5?
- 28.Do czego służą deklaracje
using(TS 5.2)? - 29.Co zwraca
(typeof users)[number], jeśliusers: User[]? - 30.Co da typ mapowany
{ [K in keyof T]: Box<T[K]> }, jeśliTto krotka[string, number]? - 31.Jak z wartości pobrać typ elementu
Set<T>lubMap<K, V>? - 32.Do czego służy słowo kluczowe
declare? - 33.Jak sprawdzić typ w testach tak, by błąd pojawił się, gdy NIE ma błędu kompilacji?
- 34.Kiedy podwójna asercja
x as unknown as Tjest uzasadniona? - 35.Dlaczego warto unikać typu
Functiondla callbacków? - 36.Dlaczego nie można napisać
a.xdlaa: { x: string } | { y: number }? - 37.Co zmienia flaga
exactOptionalPropertyTypes? - 38.Co zwraca
keyof (A | B), jeśliA = { id; name }, aB = { id; price }? - 39.Jak włączyć sprawdzanie typów w plikach JS bez migracji na TS?
- 40.Jak otypować parametr przyjmujący konstruktor klasy abstrakcyjnej?
- 41.Czy zawężenie zmiennej
letjest zachowywane wewnątrz callbacku? - 42.Czym jest homomorficzny typ mapowany i co zachowuje?
- 43.Jak otypować funkcję podobną do
Promise.alldla krotki promise'ów? - 44.Dlaczego zaleca się adnotować zwracane typy eksportowanych funkcji w bibliotece?
- 45.Dlaczego
isolatedDeclarations(TS 5.5) jest przydatne dla monorepo? - 46.Czym
T extends objectróżni się odT extends {}jako ograniczenie generyka? - 47.Dlaczego rozszerzanie interfejsu jest dla kompilatora szybsze niż przecięcie?
- 48.Jak otypować reducer, by
payloadzależał odtypeakcji? - 49.Co zwraca
T[keyof T]dlaT = { a: string; b: number }? - 50.Do czego służy
declare module '*.svg'? - 51.Dlaczego to się kompiluje i gdzie jest dziura w poprawności?
- 52.Na co pozwala eliminacja rekurencji ogonowej dla typów warunkowych (TS 4.5)?
- 53.Jak wyciągnąć parametry trasy z typu stringa ścieżki?
- 54.Jak bezpieczny typowo builder gromadzi informacje w swoim typie?
- 55.TypeScript nie ma typów wyższego rzędu. Jak biblioteki emulują
F<A>, gdzieFjest generyczne? - 56.Co oznacza błąd „The inferred type of 'x' cannot be named without a reference to ...”?
- 57.Dlaczego pakiet dual ESM/CJS potrzebuje osobnych plików deklaracji (np.
.d.mtsi.d.cts)? - 58.Na co pozwala
rewriteRelativeImportExtensions(TS 5.7)? - 59.Jaki jest główny cel natywnego (Go) portu TypeScriptu?
- 60.W czym pomagają reguły typescript-eslint
no-unsafe-*? - 61.Czego wymaga funkcja asercji, by jej wywołanie zawężało typ?
- 62.Co robi predykat
this isw metodzie klasy? - 63.Czym jest
{ id: string } & { id: number }? - 64.Jak uzyskać typ eksportów modułu bez importowania jego wartości?
- 65.Dlaczego sprawdzanie nadmiarowych właściwości pomija błąd w tym przypadku?
- 66.Dlaczego duża unia literałów stringowych może spowolnić kompilator?
- 67.Dlaczego zmienna
letmoże tracić zawężenie wewnątrz callbacku, aconstje zachowuje? - 68.Dlaczego publiczna biblioteka powinna unikać
enumw swoim API? - 69.Jak otypować funkcję, która zachowuje dokładne klucze przekazanego obiektu, przekształcając wartości?
- 70.Jak zapobiec uzależnianiu się konsumentów od wewnętrznych typów biblioteki?
- 71.Jaki problem może spowodować
strictNullChecks: falsew jednym pakiecie monorepo? - 72.Dlaczego jawne ograniczenia generyków są lepsze od rzutowania wewnątrz funkcji generycznej?
- 73.Co zwraca
Object.freezepod względem typów? - 74.Jak sprawić, by sprawdzanie wyczerpania unii dyskryminowanej wyłapywało brakujący przypadek także w warstwie danych?
- 75.Dlaczego typowanie klienta API samymi generykami, jak
get<T>(url): Promise<T>, jest ryzykowne?