From 5f87d616ee58cd818bda37562d39926e08cbbe08 Mon Sep 17 00:00:00 2001 From: miqlangelo Date: Mon, 5 May 2025 11:59:27 +0200 Subject: [PATCH] interfaces --- src/03-klassen/interfaces.ts | 119 +++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 src/03-klassen/interfaces.ts diff --git a/src/03-klassen/interfaces.ts b/src/03-klassen/interfaces.ts new file mode 100644 index 0000000..c869998 --- /dev/null +++ b/src/03-klassen/interfaces.ts @@ -0,0 +1,119 @@ +interface IUser { + name: string; + email: string; + getInfo(): string; +} + +type UserType = { + name: string; + email: string; + getInfo: () => string; +}; + +export class User implements IUser { + constructor(public name: string, public email: string) {} + + getInfo(): string { + return `${this.name} (${this.email})`; + } +} + +const _user: UserType = { + name: 'Bob', + email: 'bob@mail.com', + getInfo: function (): string { + return 'xy'; + }, +}; + +interface IAdmin extends IUser { + role: 'admin' | 'user'; +} + +const admin: Partial = { + role: 'admin', +}; + +interface IUserExtended { + readonly id: string; + name: string; + email: string; + phone?: string; +} + +const user: IUserExtended = { + id: 'id', + name: 'Fritz', + email: 'fritz@mail.com', +}; + +user.phone = '555'; +user.name = 'Heinz'; +// user.id = "" + +interface UserAttribues { + propertyName: string; + [key: string]: string | number; +} + +const userAttribues: UserAttribues = { + propertyName: 'value', + name: 'Charly', +}; + +console.log(userAttribues.propertyName); +console.log(userAttribues['propertyName']); + +console.log(userAttribues['name']); + +interface Animal { + name: string; +} + +interface Animal { + age: number; +} + +// const animal: Animal = { +// age +// } + +interface Dog extends Animal { + breed: string; +} + +type Vehicle = { + brand: string; +}; + +type Model = { + model: string; +}; + +// type Car = Vehicle & { +// model: string; +// } +type Car = Vehicle & Model; + +const car: Car = { + model: 'X', + brand: 'Car', +}; +console.log(car); + +type Status = 'success' | 'error' | 'loading'; + +interface HttpResponse { + status: Status; + data: any; +} + +interface HttpResponse { + headers: Record; +} + +const response: HttpResponse = { + status: 'success', + data: {}, + headers: {}, +};