Function Annotations in TypeScript
Function Annotations in TypeScript
Section titled “Function Annotations in TypeScript”Basic Annotations
Section titled “Basic Annotations”// Parameters and return typefunction add(a: number, b: number): number { return a + b;}
// Arrow functionsconst multiply = (a: number, b: number): number => a * b;
// Anonymous functionsconst divide = function(a: number, b: number): number { return a / b;};
// Contextual typing (inferred)const numbers = [1, 2, 3];const doubled = numbers.map(n => n * 2); // n inferred as numberOptional and Default Parameters
Section titled “Optional and Default Parameters”// Optional parameterfunction greet(name: string, greeting?: string): string { return `${greeting ?? "Hello"}, ${name}!`;}
// Default parameterfunction createUser(name: string, role: string = "user", isActive: boolean = true) { return { name, role, isActive };}
// Parameter destructuringfunction printUser({ name, age }: { name: string; age?: number }): void { console.log(name, age);}Rest Parameters
Section titled “Rest Parameters”function sum(...numbers: number[]): number { return numbers.reduce((a, b) => a + b, 0);}
function buildMessage(prefix: string, ...suffixes: string[]): string { return prefix + suffixes.join(" ");}
function logWithTimestamp(timestamp: number, ...messages: string[]): void { console.log(`[${timestamp}]`, ...messages);}Call Signatures
Section titled “Call Signatures”// Type alias for function shapetype GreetFn = (name: string) => string;
// Interface call signatureinterface MathOp { (a: number, b: number): number;}
// With properties (callable + properties)interface Counter { (start: number): string; interval: number; reset(): void;}
function getCounter(): Counter { const fn = ((start: number) => `Count: ${start}`) as Counter; fn.interval = 1000; fn.reset = () => { }; return fn;}Construct Signatures
Section titled “Construct Signatures”// Describes a constructortype AnimalConstructor = new (name: string) => Animal;
interface DogConstructor { new (name: string): Dog;}
function createAnimal(Ctor: AnimalConstructor, name: string): Animal { return new Ctor(name);}Interview Questions
Section titled “Interview Questions”Easy: How do you type annotate function parameters?
Medium: What is the difference between optional and default parameters?
Hard: How would you create a callable object with additional properties?