A resourceful newsletter featuring the latest and most important news, articles, books and updates in the world of #javascript π Don't miss our Quizzes!
Let's chat: @nairihar
Post #2233
4.67K
- β€ 4
- π 2
- π₯ 2
- π€© 1
JA @javascript
Showing posts older than #2234 Β· Back to latest
type User = {
id: number;
name: string;
email?: string;
};
function processUser<T extends User>(user: T): T & { processed: boolean } {
return { ...user, processed: true };
}
const partialUser = { id: 1, name: 'Alice' };
const result = processUser(partialUser);
console.log(typeof result.email);
function processUserData(data) {
const settings = {
theme: data.preferences?.theme ?? 'light',
notifications: data.preferences?.notifications ?? true,
fontSize: data.preferences?.fontSize ?? 16
};
let status = data.status ?? 'active';
let reputation = data.reputation ?? 0;
console.log(reputation || 'No reputation yet');
return settings;
}
processUserData({ status: '', reputation: 0 });
function processConfig(config) {
const defaultPort = 8080;
const defaultTimeout = 5000;
const port = config?.port ?? defaultPort;
const timeout = config?.timeout ?? defaultTimeout;
const debug = config?.debug ?? false;
return {
summary: `Port: ${port}, Timeout: ${timeout}, Debug: ${debug ? 'enabled' : 'disabled'}`,
isUsingDefaults: port === defaultPort && timeout === defaultTimeout
};
}
const result = processConfig({ port: 0, timeout: null });
console.log(result.summary);// What will be logged when this code runs?
const counter = (() => {
let count = 0;
return {
increment() {
count += 1;
return this;
},
reset() {
count = 0;
return this;
},
get value() {
return count;
}
};
})();
const { increment, value } = counter;
increment();
counter.increment();
console.log(value);
function createCounter() {
let count = 0;
return function() {
count++;
return count;
};
}
const counter1 = createCounter();
const counter2 = createCounter();
counter1();
counter1();
counter2();
const result = counter1() + counter2();
console.log(result);
const obj = {
[Symbol('a')]: 'hidden',
[Symbol.for('b')]: 'registered',
c: 'normal'
};
const symbols = Object.getOwnPropertySymbols(obj);
const keys = Object.keys(obj);
const allProps = Reflect.ownKeys(obj);
console.log(symbols.length, keys.length, allProps.length);const p1 = Promise.resolve(1);
const p2 = new Promise(resolve => resolve(2));
const p3 = new Promise(resolve => setTimeout(() => resolve(3), 0));
const p4 = Promise.reject(4).catch(err => err);
Promise.all([p1, p2, p3, p4])
.then(values => {
const result = values.reduce((acc, val) => {
return acc + val;
}, 0);
console.log(result);
})
.catch(err => console.log('Error:', err));
