Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions src/baseTypes/1.ts
Original file line number Diff line number Diff line change
@@ -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 {};
4 changes: 2 additions & 2 deletions src/baseTypes/2.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
let anything = -20;
let anything: any = -20;
anything = 'Text';
anything = {};

export {};
export {};
7 changes: 5 additions & 2 deletions src/baseTypes/3.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
let some:unknown;
some = 'Text';
let str: string;
str = some;

export {};
if (typeof some === "string") {
str = some;
}

export {};
5 changes: 3 additions & 2 deletions src/baseTypes/4.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
щоб гарантувати, що перший елемент завжди буде рядком, а другий числом?
*/

let person = ['Max', 21];
let person:[string, number];
person = ['Max', 21];

export {};
export {};
8 changes: 6 additions & 2 deletions src/baseTypes/5.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,9 @@
І так само визначте змінну, яка може приймати тільки одне з двох рядкових значень: 'enable' або 'disable' (literal type)?
*/

let union;
let literal;
let union: string | number;

type Value = "enable" | "disable";
let literal: Value;
literal = "enable";
literal = "disable";
10 changes: 5 additions & 5 deletions src/baseTypes/6.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 {};
export {};
15 changes: 14 additions & 1 deletion src/baseTypes/7.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,17 @@
/*
Створіть функцію (isWeekend), яка приймає день тижня (з вашого enum)
і повертає boolean значення, що вказує, чи це день робочий чи вихідний.
*/
*/
enum dayWeek {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY,
}

function isWeekend(todayDay: dayWeek): boolean {
return dayWeek.SATURDAY === todayDay || dayWeek.SUNDAY === todayDay;
}
4 changes: 2 additions & 2 deletions src/baseTypes/8.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
Створіть тип "Gender", використовуючи union type,
який може містити значення "male", "female". Створіть змінну myGender цього типу.
*/

const myGender;
type Gender = "male" | "female"
const myGender:Gender = "female";

export {};
14 changes: 11 additions & 3 deletions src/baseTypes/9.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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'],
Expand All @@ -13,11 +21,11 @@ const page1 = {
}
}

const page2 = {
const page2: Page = {
title: 'Python or Js',
likes: 5,
accounts: ['Alex'],
status: 'close',
}

export {};
export {};
4 changes: 2 additions & 2 deletions src/generic/1.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
Доповніть цю функцію, використовуючи generics, щоб вона повертала правильний тип.
*/

function getPromise () {
function getPromise (): Promise<(string | number)[]> {
return new Promise((resolve) => {
resolve(['Text', 50]);
});
Expand All @@ -14,4 +14,4 @@ getPromise()
console.log(data);
});

export {};
export {};
7 changes: 5 additions & 2 deletions src/generic/2.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ type AllType = {
weight: number
}

function compare (top, bottom): AllType {
function compare (top: Pick<AllType, "name" | "color">,
bottom: Pick<AllType, "position" | "weight">,): AllType {
return {
name: top.name,
color: top.color,
Expand All @@ -20,4 +21,6 @@ function compare (top, bottom): AllType {
}
}

export {};


export {};
4 changes: 2 additions & 2 deletions src/generic/3.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
Використовуйте generics, щоб вказати, що ці об'єкти можуть бути будь-якого типу.
*/

function merge (objA, objB) {
function merge<T extends object, K extends object> (objA:T, objB:K) {
return Object.assign(objA, objB);
}

export {}
export {}
19 changes: 10 additions & 9 deletions src/generic/4.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
/*
Використовуйте generics та інтерфейси, щоб виправити помилку в наступних класах:
*/
interface TitleType {
title: string;
}

class Component {
constructor (public props:T) {

}
class Component<T> {
constructor(public props: T) {}
}

class Page extends Component {
pageInfo () {
console.log(this.props.title);
}
class Page extends Component<TitleType> {
pageInfo() {
console.log(this.props.title);
}
}

export {};
export {};
8 changes: 4 additions & 4 deletions src/generic/5.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
Використовуйте generics, щоб цей інтерфейс міг працювати з будь-якими типами ключів та значень.
*/

interface KeyValuePair {
key;
value;
interface KeyValuePair<T, K> {
key: T;
value: K;
}

export {};
export {};
4 changes: 2 additions & 2 deletions src/generic/6.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ type User = {
password: string;
}

function createOrUpdateUser(initialValues: User) {
function createOrUpdateUser(initialValues: Partial<User>) {
// Оновлення користувача
}

createOrUpdateUser({ email: 'user@mail.com', password: 'password123' });

export {};
export {};
13 changes: 8 additions & 5 deletions src/generic/7.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,13 @@ export enum UserRole {
}

// Замініть наступний код на версію за допомогою Record
const RoleDescription = {
admin: 'Admin User',
editor: 'Editor User',
guest: 'Guest User',

type RoleValue = Record<UserRole, string>

const RoleDescription:RoleValue = {
[UserRole.admin]: 'Admin User',
[UserRole.editor]: 'Editor User',
[UserRole.guest]: 'Guest User',
};

export {};
export {};
4 changes: 2 additions & 2 deletions src/generic/8.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,6 @@ type Form = {
};

// Реалізуйте Params так, щоб унеможливити поле 'errors' з типу Form
type Params = Form;
type Params = Omit<Form,'errors'>;

export {};
export {};