diff --git a/src/05-forgeschrittenes-typsystem/KATA2/starter.ts b/src/05-forgeschrittenes-typsystem/KATA2/starter.ts new file mode 100644 index 0000000..ce15e00 --- /dev/null +++ b/src/05-forgeschrittenes-typsystem/KATA2/starter.ts @@ -0,0 +1,66 @@ +export {}; + +// 1. NonNullableProps +type Response = { success: boolean; message?: string }; +type NonNullableProps = any; +type NonNullableResponse = NonNullableProps; +// Erwartet: +// { success: boolean; message: string; } + +// 2. ReadonlyExcept +type Event = { timestamp: number; type: string }; +type ReadonlyExcept = any; +type ReadonlyExceptType = ReadonlyExcept; +// Erwartet: +// { readonly timestamp: number; type: string; } + +// 3. KeysOfType +type Settings = { darkMode: boolean; fontSize: number }; +type KeysOfType = any; +type KeysWithBoolean = KeysOfType; +// Erwartet: "darkMode" + +// 4. NumberKeys +type Employee = { id: number; name: string; salary: number }; +type NumberKeys = any; +type KeysWithNumbers = NumberKeys; +// Erwartet: "id" | "salary" + +// 5. ReturnTypeOf +type FetchFn = () => Promise; +type ReturnTypeOf = any; +type FetchResult = ReturnTypeOf; +// Erwartet: Promise + +// 6. FilterStrings +type Values = { a: string; b: number; c: boolean }; +type FilterStrings = any; +type OnlyStrings = FilterStrings; +// Erwartet: +// { a: string; } + +// 7. FunctionKeys +type Button = { text: string; onClick: () => void }; +type FunctionKeys = any; +type FnKeys = FunctionKeys