CHALLENGE
const data = [
{ name: "Zara", score: 88 },
{ name: "Liam", score: 95 },
{ name: "Maya", score: 88 },
{ name: "Omar", score: 72 },
{ name: "Nina", score: 95 },
];
const sorted = [...data].sort((a, b) =>
b.score !== a.score
? b.score - a.score
: a.name.localeCompare(b.name)
);
console.log(sorted.map(p => `${p.name}:${p.score}`).join(", "));
❤10🤔1
CHALLENGE
class Session {
#id;
constructor(id) {
this.#id = id;
}
getId() {
return this.#id;
}
}
const activeSessions = new WeakSet();
const s1 = new Session("alpha");
const s2 = new Session("beta");
let s3 = new Session("gamma");
activeSessions.add(s1);
activeSessions.add(s2);
activeSessions.add(s3);
console.log(activeSessions.has(s1));
console.log(activeSessions.has(s3));
activeSessions.delete(s2);
console.log(activeSessions.has(s2));
try {
activeSessions.add("invalid");
} catch (e) {
console.log(e instanceof TypeError);
}
console.log(activeSessions.has(s1));
❤6🔥6
What is the output?
Anonymous Quiz
16%
true false false true true
49%
true true false true true
24%
true true true false true
10%
true true false false true
❤5🔥3
CHALLENGE
const tag = (strings, ...values) => {
return strings.reduce((result, str, i) => {
const val = values[i - 1];
const transformed =
typeof val === "number" ? `[${val ** 2}]` : `{${val?.toUpperCase()}}`;
return result + transformed + str;
});
};
const name = "nova";
const level = 3;
const score = 97;
const output = tag`Player: ${name} | Level: ${level} | Score: ${score}`;
console.log(output);
CHALLENGE
const handler = {
get(target, prop, receiver) {
if (prop in target) {
return Reflect.get(target, prop, receiver) * 2;
}
return Reflect.get(target, prop, receiver);
},
set(target, prop, value, receiver) {
if (typeof value !== "number") return false;
return Reflect.set(target, prop, value * 3, receiver);
},
has(target, prop) {
return prop.startsWith("x") && Reflect.has(target, prop);
},
};
const obj = new Proxy({ x1: 10, y1: 20 }, handler);
obj.x2 = 15;
obj.y2 = 40;
console.log(obj.x1);
console.log(obj.x2);
console.log("x1" in obj);
console.log("y1" in obj);
console.log(obj.y2);❤1🔥1
What is the output?
Anonymous Quiz
29%
20 90 true false 240
41%
10 15 true true 40
17%
20 45 false true 80
13%
20 30 true false 120
Flow is Meta's mature typed dialect of JavaScript, and over the years its syntax has converged closely with TypeScript's. This post walks through where the two now differ: Flow's stricter defaults reject several crash-prone patterns TypeScript's strict mode accepts, and it adds features of its own, like exhaustive match expressions.
George Zahariev (Meta)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥1
CHALLENGE
const compose = (...fns) => x => fns.reduceRight((acc, fn) => fn(acc), x);
const pipe = (...fns) => x => fns.reduce((acc, fn) => fn(acc), x);
const double = x => x * 2;
const addTen = x => x + 10;
const square = x => x ** 2;
const negate = x => -x;
const transform1 = compose(negate, square, addTen, double);
const transform2 = pipe(negate, square, addTen, double);
console.log(transform1(3));
console.log(transform2(3));
❤6
❤2
CHALLENGE
function* range(start, end) {
while (start < end) {
yield start++;
}
}
function* labeled(prefix, gen) {
for (const val of gen) {
yield `${prefix}:${val}`;
}
}
function* pipeline() {
yield* labeled("A", range(1, 4));
yield* labeled("B", range(10, 12));
}
const results = [...pipeline()];
console.log(results.length, results[0], results[results.length - 1]);🔥2👍1
❤3
CHALLENGE
function Vehicle(make, model, year) {
this.make = make;
this.model = model;
this.year = year;
this.describe = function () {
return `${this.year} ${this.make} ${this.model}`;
};
}
Vehicle.prototype.age = function (currentYear) {
return currentYear - this.year;
};
const car = new Vehicle("Toyota", "Supra", 1998);
const truck = new Vehicle("Ford", "Raptor", 2021);
console.log(car.describe());
console.log(truck.age(2025));
console.log(car.constructor === Vehicle);
console.log(Object.getPrototypeOf(car) === Vehicle.prototype);
❤5👍2🔥2
What is the output?
Anonymous Quiz
29%
Toyota Supra 1998 4 false true
41%
1998 Toyota Supra 4 true true
21%
1998 Toyota Supra 27 true true
9%
1998 Toyota Supra 4 true false
❤6👍1
CHALLENGE
const balance = 9007199254740991n; // Number.MAX_SAFE_INTEGER as BigInt
const fee = 1n;
const multiplier = 2n;
const total = (balance + fee) * multiplier;
const asNumber = Number(total);
const isSafe = Number.isSafeInteger(asNumber);
const isExact = BigInt(asNumber) === total;
console.log(`${total}n | safe: ${isSafe} | exact: ${isExact}`);
❤2👍1🔥1
CHALLENGE
console.log('1: start');
setTimeout(() => console.log('2: setTimeout'), 0);
Promise.resolve()
.then(() => {
console.log('3: promise 1');
return Promise.resolve('chained');
})
.then((val) => console.log(`4: ${val}`));
queueMicrotask(() => console.log('5: microtask'));
new Promise((resolve) => {
console.log('6: executor');
resolve();
}).then(() => console.log('7: promise 2'));
console.log('8: end');❤3🔥3👍1