TypeScript with Node
Node.js é um ambiente de execução muito popular baseado no v8,
a engine JavaScript que da vida ao Chrome. Você pode usa-la
para construir servers, clientes front-end e qualquer coisa que
esteja entre os dois.
https://nodejs.org/
Node.js vem com um grupo de bibliotecas base que estendem o
ambiente de execução Javascript.
Abrangendo desde tratamento de caminhos:
// Você pode adicionar tipos de forma incremental ao seus projetos Javascript
usando tipos no estilo JSDoc. Iremos fazer um para nossa lista de afazeres
baseados na estrutura JSON:
import { join } from "path";
const caminho = join("~", "downloads", "todo_list.json");
// a manipulação de arquivos:
import { readFileSync } from "fs";
const textoTodoList = readFileSync(caminho, "utf8");
// Agora atribuímos isso ao valor de retorno do JSON.parse
para saber mais sobre isso, veja: exemplo:jsdoc-support
/**
* @typedef {Object} todo um item da lista
* @property {string} titulo O nome de exibição para o item da lista.
* @property {string} corpo A descrição do item da lista.
* @property {boolean} completo Se o item da lista está completo
*/
// TypeScript tem definições de tipo atualizadas para todos os
módulos embutidos via DefinitelyTyped - que significa que você
pode escrever programas node com uma forte cobertura de tipos.
/** @type {todo[]} uma lista de afazeres */
const todoList = JSON.parse(textoTodoList);
// E tratamento de processos:
import { spawnSync } from "child_process";
todoList
.filter(todo => !todo.completo)
.forEach(todo => {
// Use o cliente ghi para criar uma issue para cada item
// da lista de afazeres que ainda não foram concluídos.
// Note que você tem auto-complete e documentação
// no JS quando você destaca 'todo.titulo' abaixo.
spawnSync(`ghi open --message "${todo.titulo}\n${todo.corpo}"`);
});