gpui-component/crates/story/examples/fixtures/test.js

76 lines
1.8 KiB
JavaScript

/**
* A class representing a HelloWorld greeter with various utility methods
* @class HelloWorld
*/
class HelloWorld {
// Version number of the HelloWorld class
static VERSION = '1.0.0';
// Counter to track number of class instances
static #instanceCount = 0;
// Private instance fields
#name;
#options;
#createdAt;
/**
* Creates a new HelloWorld instance
* @param {string} name - The name to use for greetings
* @param {Object} options - Configuration options
*/
constructor(name = 'World', options = {}) {
this.#name = name;
this.#options = options;
this.#createdAt = new Date();
HelloWorld.#instanceCount++;
}
static getInstanceCount() {
return HelloWorld.#instanceCount;
}
get name() {
return this.#name;
}
set name(value) {
this.#name = value;
}
async greet(...names) {
try {
for (const name of names) {
await new Promise(resolve => setTimeout(resolve, 100));
console.log(`Hello, ${name}!`);
}
} catch (error) {
console.error(`Error: ${error.message}`);
}
}
configure(options = {}) {
Object.assign(this.#options, options);
}
*generateSequence(start = 0, end = 10) {
for (let i = start; i <= end; i++) yield i;
}
processNames(names) {
return names
.filter(name => name.length > 0)
.map(name => name.toUpperCase())
.sort();
}
}
const greeter = new HelloWorld('JavaScript');
(async () => {
const uniqueNames = new Set(['Alice', 'Bob']);
await greeter.greet(...uniqueNames);
for (const num of greeter.generateSequence(0, 5)) {
console.log(num);
}
})();