Typescript type annotations

Created By: chatGPT

In TypeScript, type annotations are a way to explicitly specify the types of variables, function parameters, and return values. This helps developers catch errors during development by ensuring that values meet expectations. By utilizing type annotations, you improve the maintainability and readability of your code.
let username: string = 'JohnDoe';
let age: number = 30;
let isActive: boolean = true;
You can also define complex types such as arrays, tuples, and objects. This allows you to structure your data more effectively. For example, when declaring an array of numbers or a tuple with mixed types, type annotations are essential.
let scores: number[] = [95, 82, 75];
let person: [string, number] = ['Alice', 25];
When defining function signatures, you can use type annotations to specify the types of parameters and the return type. This practice ensures that the function is called with the correct types and helps document its behavior.
function greet(name: string): string {
    return `Hello, ${name}!`;
}

let message: string = greet('Alice');
Interfaces and type aliases offer another powerful way to use type annotations. They allow you to create reusable type definitions that can simplify your code and provide clarity.
interface User {
    username: string;
    age: number;
    isActive: boolean;
}

let user: User = {
    username: 'JohnDoe',
    age: 30,
    isActive: true
};
Type annotations also play a significant role when working with class properties and methods in TypeScript, ensuring that the types of properties and method return values are consistent throughout the class.
class Animal {
    name: string;
    age: number;

    constructor(name: string, age: number) {
        this.name = name;
        this.age = age;
    }

    speak(): string {
        return `${this.name} makes a noise.`;
    }
}

const dog: Animal = new Animal('Buddy', 4);
Introduction And SetupVariablesData TypesAnyUnknownVoidNeverStringNumberBooleanArrayTupleEnumObjectInterfaceType AliasMethodsFunctionArrow FunctionReturn TypeParametersDefault ParametersOptional ParametersRest ParametersControl FlowIf StatementElse StatementSwitch StatementFor LoopWhile LoopDo While LoopFor...of LoopFor...in LoopBreak StatementContinue StatementFunctionsFunction OverloadingRecursive FunctionExpression FunctionOperatorsArithmetic OperatorsAssignment OperatorsComparison OperatorsLogical OperatorsBitwise OperatorsConditional (ternary) OperatorData StructuresArrayTupleObjectMapSetCommentsSingle Line CommentMulti Line CommentSyntaxType AnnotationsType InferenceNamespaceModuleExportImportDecoratorsAmbient DeclarationsEvent HandlingEvent ListenersAddEventListenerRemoveEventListenerError HandlingTry...catch StatementThrow StatementFinally BlockCustom Error TypesAsync AwaitPromisesGenericsConditional TypesMapped TypesIntersection TypesUnion TypesLiteral TypesDiscriminated UnionsType GuardsTypeof GuardInstanceof GuardAssertion FunctionsModule Augmentation