GEDOPLAN

Als Fullstackentwickler ist man mit einem bunten Blumenstrauß an Technologien gesegnet. Insbesondere JavaScript und TypeScript ist für viele Java Entwickler erst einmal ungewohntes Terrain. Diese kleine Serie zeigt zumindest einige Features über die der ein oder andere Java Entwickler sicherlich den Kopf schütteln wird (bis er sie lieben gelernt hat 🙂 )

Mehr ist besser, aber bitte einfach: Function Overloads

interface News {
    title?: string
    titleType?: number
    message: string
}

function createNews(message: string): News;
function createNews(message: string, title: string, titleType: number): News;
function createNews(message: string, title?: string, titleType?: number): News {
    return {
        message,
        title,
        titleType
    };
}

createNews("Hello World");
createNews("Hello World", "News-Flash", 2);
// createNews("Hello World", "News-Flash"); // error, die ausimplementierte Funktion ist nicht direkt aufrufbar

Typisierung. Aber immer schön flexibel bleiben: Index Signatures

interface ISOCountryNames {
    [index: string]: string;
    default: string
}

let isoNames: ISOCountryNames = {
    de: 'Deutschland',
    en: 'England',
    default: 'Lummerland'
}

Einmal irgendwas davon: key of

function publishNewsAttribute(news: News, att: keyof News) {
    console.log(news[att]);
}

publishNewsAttribute({} as News, 'message')
publishNewsAttribute({} as News, 'title')
// publishNewsAttribute({} as News, 'was-anderes') // compiler error

Alles davon. Aber anders: Mapped Types

// Mapped Types
type NewsPrintSize = {
    [index in keyof News]: number;
};

const printSizes: NewsPrintSize = {
    message: 12,
    title: 15,
    titleType: 0,
    anders: 22 // compiler error
}