Skip to content
tezvyn:

Types

36 bites tagged Types — interview questions with model answers, and 60-second explainers.

TypeScript & Web APIs1 min read

Generic merge with an intersection return type

Use two type parameters T and U, return T & U, spread both objects; note later spread wins on key collisions and the type may not reflect that. Generics and intersection types.

TypeScript & Web APIs2 min read

How do you add TypeScript types for a library without bundled types?

This tests the DefinitelyTyped @types workflow. Install @types/package as a dev dependency via npm or yarn, skipping it when the library already bundles .d.ts files. A red flag is suggesting manual declarations or extra tooling before checking DefinitelyTyped.

TypeScript & Web APIs2 min read

Explain what TypeScript's type inference is and show an inferred variable declaration

This tests whether you understand TypeScript deduces types without annotations. A strong answer defines inference as deriving types from values and gives an example like let x = 3 inferring number. A red flag is claiming explicit types are required.

TypeScript & Web APIs2 min read

Declare a string name and an array of lucky numbers in TypeScript

Declare the name with a lowercase string type and the lucky numbers as number[] or Array<number>. Primitive and array type annotations in TypeScript. Using uppercase String or Number, or omitting the array type.

iOS & Swift2 min read

Swift Basic Types: Value Semantics by Default

Swift's basic types are value type structs, so assignment copies, not shares, a reference. You feel this when passing Strings into functions or choosing Int over Double. The footgun is treating them as free to copy; large values cost memory and speed.

Go & Rust2 min read

Primitive Scalars: Go vs Rust

Go's int grows with the architecture; Rust fixes sizes like i32 at compile time. Use Go's int for loops and Rust's i32 for counters, but both require explicit casts to mix. Assuming Go's int is 64-bit breaks 32-bit builds, and Rust's as truncates silently.

TypeScript & Web APIs2 min read

Identifying JS Library Structure for TypeScript Types

To type a JS library, first identify its structure: module, global, or UMD. This dictates your .d.ts file's shape. You'll check docs for `import`/`require` or `<script>` usage. The footgun is misidentifying a UMD library, leading to incorrect import types.

TypeScript & Web APIs2 min read

Module Augmentation: Adding Types to External Libraries

Module augmentation is like monkey-patching for types, letting you add definitions to external modules. Use it to add a `user` property to Express's `Request` object.

TypeScript & Web APIs2 min read

Triple-Slash Directives: Compiler Hints in Comments

Triple-slash directives are compiler instructions inside comments, telling TypeScript about file dependencies. They're mostly seen in older projects or for global types, as modern `import` statements are preferred.

TypeScript & Web APIs2 min read

TypeScript: Type-Only Imports and Exports

Use `import type` to tell the compiler an import is only for type-checking and should be erased from the final JavaScript. This prevents tools like Babel from generating unwanted runtime code when compiling files in isolation.

TypeScript & Web APIs2 min read

TypeScript's `declare`: A Promise to the Compiler

`declare` promises the TypeScript compiler a value exists, even if it can't see the source. This lets you use untyped JavaScript libraries or browser APIs without errors.

TypeScript & Web APIs1 min read

DefinitelyTyped: Type Definitions for JavaScript Libraries

@types packages from DefinitelyTyped are instruction manuals for JavaScript libraries, letting TypeScript understand their shapes. You install them for JS libs that lack their own types, enabling autocompletion.

TypeScript & Web APIs2 min read

Declaration Files: How TypeScript Knows Your Library's Shape

A `.d.ts` file is a type-only blueprint for existing JavaScript code, describing its shape without any implementation. This is how TypeScript provides type-checking for third-party libraries or browser APIs. The footgun is adding logic to them; it's ignored.

TypeScript & Web APIs2 min read

Variadic Tuple Types: Type-Safe Spreads for Tuples

Variadic tuple types let you use spread syntax (`...`) inside tuple type definitions, just like you do with array values. This is crucial for typing functions that manipulate tuples, like `concat`, without writing endless overloads or losing type information.

TypeScript & Web APIs2 min read

TypeScript: Modify Properties with Mapped Type Modifiers

Mapped type modifiers let you add or remove `readonly` and `?` from a type's properties. Use them to create a fully required type from an optional one, or a mutable version of a readonly object. The footgun: remember the `-` prefix to *remove* modifiers.

TypeScript & Web APIs2 min read

Indexed Access Types: Look Up a Property's Type

Indexed access types let you look up a property's type on another type, like `Person['age']` yielding `number`. Use them to create new types from existing ones, like getting an array element's type with `MyArray[number]`.

TypeScript & Web APIs2 min read

TypeScript Generics: Writing Functions That Adapt to Types

TypeScript generics create functions with type placeholders, capturing an input's type to inform the output's. This is vital for reusable components that work on various data types.

TypeScript & Web APIs2 min read

TypeScript Classes: Blueprints for Typed Objects

A TypeScript class is a blueprint for creating objects, adding type safety to JavaScript's object-oriented patterns. Use them for core data structures like a `User`. The main footgun is forgetting to initialize properties, which strict mode flags as an error.

TypeScript & Web APIs2 min read

TypeScript: Typing Function Inputs and Outputs

Think of function types as a contract defining what data goes in and what comes out. This is core to TypeScript, ensuring functions are called correctly. The footgun is relying on return type inference, which can hide bugs if logic changes unexpectedly.

TypeScript & Web APIs2 min read

TypeScript: Build New String Types with Template Literals

Template literal types are a factory for new string types, built from existing string literals and unions. They are perfect for generating permutations, like creating 'propChanged' event names from an object's keys.

TypeScript & Web APIs2 min read

TypeScript Utility Types: Don't Reinvent the Type

Utility types are pre-built functions for your types, transforming them without manual effort. Use `Partial<T>` for update functions or `Readonly<T>` for immutable objects.

TypeScript & Web APIs2 min read

TypeScript Index Signatures: Typing Dynamic Keys

An index signature is a blueprint for a dictionary, letting you type objects where you don't know property names ahead of time, but you know their values' type. Use it for configs or caches.

TypeScript & Web APIs2 min read

TypeScript's `typeof`: Get a Type from a Value

TypeScript's `typeof` operator grabs the static type from a runtime value, like a variable. It's essential for utilities like `ReturnType`, letting you derive a type from a function's implementation without duplicating definitions.

TypeScript & Web APIs2 min read

Literal Types: Be More Specific Than `string`

Literal types specify the *exact* value a variable must hold, not just its general type like `string`. They're great for creating fixed option sets with unions, like `type Status = "pending" | "complete"`.

Get Types bites daily.

Five a day, five minutes, offline. With quizzes so it sticks.

Open testing — you’ll join as an early tester.