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
}