Receber por email
← Voltar para o catálogo

js-modern

Write modern JavaScript and TypeScript — ES6+ features, async/await, modules, destructuring, optional chaining, TypeScript types, and modern tooling. Use when writing JavaScript/TypeScript for BigCommerce themes, apps, or headless storefronts.

34estrelas
Atualizado há 5 meses

Ver no GitHub ↗ Licença: MIT

Como adicionar

/plugin marketplace add OrcaQubits/agentic-commerce-skills-plugins

O comando exato pode variar conforme o repositório. Confira o README no GitHub.

Para o autor da skill

Cole no README do seu repo

Mostra que sua skill está catalogada na Skillteca, gera backlink e tráfego rastreável.

[![Skillteca](https://www.skillteca.com.br/api/badge/js-modern/svg)](https://www.skillteca.com.br/skills/js-modern)

Alerta por categoria

Receba novas skills de Escrita e Conteúdo toda segunda

1 email curto, só com as skills novas de Escrita e Conteúdo. 4 minutos de leitura, sem spam, cancela com 1 clique.

Você confirma o email no primeiro envio. Sem spam. Cancela com 1 clique.

Ler descrição completa

Modern JavaScript & TypeScript

Before writing code

Fetch live docs: Web-search site:developer.mozilla.org javascript for MDN JavaScript reference. Check https://www.typescriptlang.org/docs/ for TypeScript documentation.

ES6+ Features

Arrow Functions

Concise function syntax with lexical this:

  • const add = (a, b) => a + b;
  • Implicit return for single expressions
  • No own this, arguments, super, or new.target

Template Literals

String interpolation and multi-line strings:

  • ` Hello, ${name}! `
  • Tagged templates for DSLs

Destructuring

Extract values from objects/arrays:

  • const { name, price } = product;
  • const [first, ...rest] = items;
  • Default values: const { name = 'Unknown' } = product;
  • Nested: const { address: { city } } = customer;

Spread / Rest

  • Spread: [...arr1, ...arr2], { ...obj1, ...obj2 }
  • Rest: function(...args) {}, const { a, ...rest } = obj;

Modules (ES Modules)

  • import { func } from './module.js';
  • export const value = 42; / export default class {}
  • Dynamic: const mod = await import('./lazy.js');

Optional Chaining & Nullish Coalescing

  • obj?.property?.nested — short-circuits to undefined if any part is nullish
  • value ?? defaultValue — returns right side only if left is null/undefined (not falsy)

Async Patterns

Promises

  • new Promise((resolve, reject) => { ... })
  • .then(), .catch(), .finally()
  • Promise.all(), Promise.allSettled(), Promise.race(), Promise.any()

Async/Await

  • async function fetchData() { const data = await fetch(url); }
  • Error handling with try/catch
  • Parallel: const [a, b] = await Promise.all([fetchA(), fetchB()]);

Fetch API

const response = await fetch(url, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify(data),
});
const result = await response.json();

TypeScript

Type Annotations

  • let name: string = 'Product';
  • function getPrice(id: number): Promise<number> { ... }
  • const product: Product = { ... };

Interfaces

interface Product {
  id: number;
  name: string;
  price: number;
  variants?: Variant[];
}

Type Utilities

  • Partial<T> — all properties optional
  • Required<T> — all properties required
  • Pick<T, K> — subset of properties
  • Omit<T, K> — exclude properties
  • Record<K, V> — key-value mapping
  • ReturnType<T> — extract return type of function

Generics

function fetchResource<T>(url: string): Promise<T> {
  return fetch(url).then(res => res.json());
}
const product = await fetchResource<Product>('/api/products/1');

Enums

enum OrderStatus {
  Pending = 'pending',
  Shipped = 'shipped',
  Completed = 'completed',
}

Discriminated Unions

type ApiResponse<T> =
  | { status: 'success'; data: T }
  | { status: 'error'; message: string };

Modern Array Methods

  • map, filter, reduce, find, findIndex
  • some, every — boolean checks
  • flat, flatMap — array flattening
  • Array.from(), Array.isArray()
  • Object.entries(), Object.fromEntries(), Object.keys(), Object.values()
  • structuredClone() — deep clone

For BigCommerce Specifically

Stencil Theme JS

  • ES6 modules bundled with webpack
  • jQuery available (Cornerstone ships it)
  • Use PageManager lifecycle for page-specific code
  • Access injected server data via this.context

Catalyst / Next.js

  • TypeScript by default
  • React components with hooks
  • Server Components + Client Components
  • Type-safe GraphQL queries

App Development

  • Node.js backend with Express/Fastify
  • TypeScript for API type safety
  • JWT handling with jsonwebtoken library

Best Practices

  • Use const by default, let when reassignment is needed, never var
  • Use async/await over raw Promises for readability
  • Use TypeScript for all non-trivial projects
  • Use optional chaining to simplify null checks
  • Use destructuring for cleaner function signatures
  • Handle errors at appropriate levels (don't swallow errors)
  • Use === instead of == for comparisons
  • Use ESLint + Prettier for consistent code style

Fetch MDN and TypeScript docs for exact syntax, browser compatibility, and new features before implementing.

Compartilhar X LinkedIn