diff --git a/src/baseTypes/1.ts b/src/baseTypes/1.ts index 2876cb9..24644e7 100644 --- a/src/baseTypes/1.ts +++ b/src/baseTypes/1.ts @@ -1,10 +1,10 @@ // Перетворіть цей код на TypeScript, вказавши відповідні типи для всіх змінних. -let age = 50; -let name = 'Max'; -let toggle = true; -let empty = null; -let notInitialize; -let callback = (a) => { return 100 + a }; +let age:number = 50; +let name:string = 'Max'; +let toggle:boolean = true; +let empty:null = null; +let notInitialize: undefined; +let callback = (a:number): number => { return 100 + a }; export {}; diff --git a/src/baseTypes/2.ts b/src/baseTypes/2.ts index 0ab2f48..d1d9ab5 100644 --- a/src/baseTypes/2.ts +++ b/src/baseTypes/2.ts @@ -1,5 +1,5 @@ -let anything = -20; +let anything: any = -20; anything = 'Text'; anything = {}; -export {}; \ No newline at end of file +export {}; diff --git a/src/baseTypes/3.ts b/src/baseTypes/3.ts index 9e7f211..1e2e555 100644 --- a/src/baseTypes/3.ts +++ b/src/baseTypes/3.ts @@ -1,6 +1,9 @@ let some:unknown; some = 'Text'; let str: string; -str = some; -export {}; \ No newline at end of file +if (typeof some === "string") { + str = some; +} + +export {}; diff --git a/src/baseTypes/4.ts b/src/baseTypes/4.ts index ec89510..ea37253 100644 --- a/src/baseTypes/4.ts +++ b/src/baseTypes/4.ts @@ -3,6 +3,7 @@ щоб гарантувати, що перший елемент завжди буде рядком, а другий числом? */ -let person = ['Max', 21]; +let person:[string, number]; +person = ['Max', 21]; -export {}; \ No newline at end of file +export {}; diff --git a/src/baseTypes/5.ts b/src/baseTypes/5.ts index 4aaf83f..e4744ec 100644 --- a/src/baseTypes/5.ts +++ b/src/baseTypes/5.ts @@ -3,5 +3,9 @@ І так само визначте змінну, яка може приймати тільки одне з двох рядкових значень: 'enable' або 'disable' (literal type)? */ -let union; -let literal; \ No newline at end of file +let union: string | number; + +type Value = "enable" | "disable"; +let literal: Value; +literal = "enable"; +literal = "disable"; diff --git a/src/baseTypes/6.ts b/src/baseTypes/6.ts index 20b4c8a..57c2bde 100644 --- a/src/baseTypes/6.ts +++ b/src/baseTypes/6.ts @@ -2,16 +2,16 @@ Як ви вкажете типи для аргументів і значень цих функцій, що повертаються? */ -function showMessage(message) { - console.log(message); +function showMessage(message: string): void { + console.log(message); } -function calc(num1, num2) { +function calc(num1: number, num2: number): number { return num1 + num2; } -function customError() { +function customError(): never { throw new Error('Error'); } -export {}; \ No newline at end of file +export {}; diff --git a/src/baseTypes/7.ts b/src/baseTypes/7.ts index 6774521..dd4f95f 100644 --- a/src/baseTypes/7.ts +++ b/src/baseTypes/7.ts @@ -1,4 +1,17 @@ /* Створіть функцію (isWeekend), яка приймає день тижня (з вашого enum) і повертає boolean значення, що вказує, чи це день робочий чи вихідний. -*/ \ No newline at end of file +*/ +enum dayWeek { + MONDAY, + TUESDAY, + WEDNESDAY, + THURSDAY, + FRIDAY, + SATURDAY, + SUNDAY, +} + +function isWeekend(todayDay: dayWeek): boolean { + return dayWeek.SATURDAY === todayDay || dayWeek.SUNDAY === todayDay; +} diff --git a/src/baseTypes/8.ts b/src/baseTypes/8.ts index 40018b2..44e796d 100644 --- a/src/baseTypes/8.ts +++ b/src/baseTypes/8.ts @@ -2,7 +2,7 @@ Створіть тип "Gender", використовуючи union type, який може містити значення "male", "female". Створіть змінну myGender цього типу. */ - -const myGender; +type Gender = "male" | "female" +const myGender:Gender = "female"; export {}; diff --git a/src/baseTypes/9.ts b/src/baseTypes/9.ts index 16a4c88..12190ab 100644 --- a/src/baseTypes/9.ts +++ b/src/baseTypes/9.ts @@ -2,7 +2,15 @@ Створіть новий тип даних, який підходить для цих двох об'єктів. */ -const page1 = { +type Page = { + title: string; + likes: number; + accounts: string[]; + status: "open" | "close"; + details?: { createAt: Date; updateAt: Date }; +}; + +const page1: Page = { title: 'The awesome page', likes: 100, accounts: ['Max', 'Anton', 'Nikita'], @@ -13,11 +21,11 @@ const page1 = { } } -const page2 = { +const page2: Page = { title: 'Python or Js', likes: 5, accounts: ['Alex'], status: 'close', } -export {}; \ No newline at end of file +export {}; diff --git a/src/generic/1.ts b/src/generic/1.ts index c368405..2393b61 100644 --- a/src/generic/1.ts +++ b/src/generic/1.ts @@ -3,7 +3,7 @@ Доповніть цю функцію, використовуючи generics, щоб вона повертала правильний тип. */ -function getPromise () { +function getPromise (): Promise<(string | number)[]> { return new Promise((resolve) => { resolve(['Text', 50]); }); @@ -14,4 +14,4 @@ getPromise() console.log(data); }); -export {}; \ No newline at end of file +export {}; diff --git a/src/generic/2.ts b/src/generic/2.ts index 734d80b..9226fd7 100644 --- a/src/generic/2.ts +++ b/src/generic/2.ts @@ -11,7 +11,8 @@ type AllType = { weight: number } -function compare (top, bottom): AllType { +function compare (top: Pick, + bottom: Pick,): AllType { return { name: top.name, color: top.color, @@ -20,4 +21,6 @@ function compare (top, bottom): AllType { } } -export {}; \ No newline at end of file + + +export {}; diff --git a/src/generic/3.ts b/src/generic/3.ts index 7838f9d..3f31669 100644 --- a/src/generic/3.ts +++ b/src/generic/3.ts @@ -3,8 +3,8 @@ Використовуйте generics, щоб вказати, що ці об'єкти можуть бути будь-якого типу. */ -function merge (objA, objB) { +function merge (objA:T, objB:K) { return Object.assign(objA, objB); } -export {} \ No newline at end of file +export {} diff --git a/src/generic/4.ts b/src/generic/4.ts index 71d1248..2ea93d0 100644 --- a/src/generic/4.ts +++ b/src/generic/4.ts @@ -1,17 +1,18 @@ /* Використовуйте generics та інтерфейси, щоб виправити помилку в наступних класах: */ +interface TitleType { + title: string; +} -class Component { - constructor (public props:T) { - - } +class Component { + constructor(public props: T) {} } -class Page extends Component { - pageInfo () { - console.log(this.props.title); - } +class Page extends Component { + pageInfo() { + console.log(this.props.title); + } } -export {}; \ No newline at end of file +export {}; diff --git a/src/generic/5.ts b/src/generic/5.ts index 5b50b61..1f15da3 100644 --- a/src/generic/5.ts +++ b/src/generic/5.ts @@ -3,9 +3,9 @@ Використовуйте generics, щоб цей інтерфейс міг працювати з будь-якими типами ключів та значень. */ -interface KeyValuePair { - key; - value; +interface KeyValuePair { + key: T; + value: K; } -export {}; \ No newline at end of file +export {}; diff --git a/src/generic/6.ts b/src/generic/6.ts index a146ea8..ff45e2c 100644 --- a/src/generic/6.ts +++ b/src/generic/6.ts @@ -14,10 +14,10 @@ type User = { password: string; } -function createOrUpdateUser(initialValues: User) { +function createOrUpdateUser(initialValues: Partial) { // Оновлення користувача } createOrUpdateUser({ email: 'user@mail.com', password: 'password123' }); -export {}; \ No newline at end of file +export {}; diff --git a/src/generic/7.ts b/src/generic/7.ts index f849799..b1d3223 100644 --- a/src/generic/7.ts +++ b/src/generic/7.ts @@ -10,10 +10,13 @@ export enum UserRole { } // Замініть наступний код на версію за допомогою Record -const RoleDescription = { - admin: 'Admin User', - editor: 'Editor User', - guest: 'Guest User', + +type RoleValue = Record + +const RoleDescription:RoleValue = { + [UserRole.admin]: 'Admin User', + [UserRole.editor]: 'Editor User', + [UserRole.guest]: 'Guest User', }; -export {}; \ No newline at end of file +export {}; diff --git a/src/generic/8.ts b/src/generic/8.ts index cbe9f1a..2b92dce 100644 --- a/src/generic/8.ts +++ b/src/generic/8.ts @@ -19,6 +19,6 @@ type Form = { }; // Реалізуйте Params так, щоб унеможливити поле 'errors' з типу Form -type Params = Form; +type Params = Omit; -export {}; \ No newline at end of file +export {};