Затишний блог про веб-розробку і не тільки 💛
Чат: @web_overflow_chat
Співпраця: @web_overflow_support
Автори: @lluchkaa & @anastasiia_tarasenko
Post #1103
2.97K
- 👍 7
- 🤔 5
- ❤ 1
WE @web_overflow
Showing posts older than #1104 · Back to latest

class Pokemon {
@log
attack() { }
}
class Pokemon {
@log({ level: "debug" })
attack() { }
}
Зверніть увагу, що в документації за посиланням нижче є банер з посиланням на статтю про декоратори із стадії 3.
const Component = "div";
return <Component>some content</Component>
React.createElement.TypeScript вам потрібно створити тип, який наче і може бути будь-яким рядком тексту, але ви б хотіли ще додати підказки від IDE про якісь певні варіанти. От, наприклад:
type Color = "primary" | "secondary" | string
| string все псує і через нього немає жодних підказок. Тому, ловіть спосіб, як це можна пофіксити:
type Color = "primary" | "secondary" | (string & {})

JavaScript такої потреби немає, адже немає статичної типізації. В TypeScript, хоч типи і не такі як в компільованих мовах, перевантаження функцій теж доступне.convert, яка перетворює boolean в number, а number в string. Звісно, можна спробувати Generics, але тут можна обійтись і без них, просто перевантаживши функцію.function convert(x: boolean): number;
function convert(x: number): string;
function convert(x: boolean | number): number | string {
return typeof x === "boolean" ? Number(x) : String(x)
}
TypeScript буде використовувати лише оголошення без тіла функції, коли працюватиме з типізацією. Виглядатиме все так, наче у вас дві різні функції, проте з однаковим іменем.convert(Math.random() > 0.5 ? true : 1)
convert, яка може прийняти boolean | number, вона може прийняти лише конкретно boolean або number. Саме ця частина спочатку часто може збивати з пантелику.abc1def2 => 12
dhij3klm => 33
4no5p6qr => 46Результат = 91


Person, де Person = { name: string, age: number }, та масив чисел breakpoints. Функція має повернути двовимірний масив, де кожен i-ий рядок - підмасив people, в яких breakpoints[i - 1] <= age < breakpoints[i] для i > 1 та age < breakpoints[i] для i = 1.Так, так, ми тут почали рахувати з 1! І ні, це завдання не повʼязано з ейджизмом!
people = [
{ name: "John", age: 16 },
{ name: "Jane", age: 17 },
{ name: "Joe", age: 30 },
]
breakpoints = [18, 21, 35]
output = [
[
{ name: "John", age: 16 },
{ name: "Jane", age: 17 },
],
[],
[{ name: "Joe", age: 30 }],
]