TypeScript como cola: integração com Python, C++ e Go

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Por que o TypeScript não vive no vácuo?

\n

Quando escrevemos em TypeScript, nos acostumamos com sua rigidez, autocompletar e genéricos. Mas mais cedo ou mais tarde, todo desenvolvedor se depara com a pergunta: "E se eu precisar chamar código em Python, C++ ou Go?". Não vamos reescrever o projeto inteiro?

\n

A boa notícia: TypeScript não é uma ilha isolada. Ele consegue se integrar com outras linguagens através de módulos nativos, WebAssembly, gRPC e até pontes HTTP comuns. Neste artigo, vamos explorar três cenários reais de integração do TypeScript com outras linguagens. Você aprenderá como unir frontend, backend e computação de alto desempenho em uma única stack.

\n\n

Cenário 1: TypeScript + Python — ciência de dados turbinada

\n

Python é o rei do aprendizado de máquina e análise de dados. Mas sua fraqueza são as interfaces web. TypeScript, por outro lado, funciona brilhantemente no navegador e no servidor. É lógico unir suas forças.

\n\n

Método A: Microsserviço HTTP (o mais simples)

\n

O caminho mais óbvio é iniciar um servidor Python (por exemplo, FastAPI) e chamá-lo a partir do TypeScript usando fetch.

\n

Python (backend.py):

\n
from fastapi import FastAPI\nfrom pydantic import BaseModel\nimport joblib\n\napp = FastAPI()\nmodel = joblib.load('model.pkl')\n\nclass InputData(BaseModel):\n    features: list[float]\n\n@app.post("/predict")\ndef predict(data: InputData):\n    result = model.predict([data.features])\n    return {"prediction": result.tolist()}\n
\n

TypeScript (frontend.ts):

\n
interface PredictionResponse {\n    prediction: number[];\n}\n\nasync function getPrediction(features: number[]): Promise<number[]> {\n    const response = await fetch('http://localhost:8000/predict', {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json' },\n        body: JSON.stringify({ features })\n    });\n    \n    if (!response.ok) throw new Error('Erro de predição');\n    \n    const data: PredictionResponse = await response.json();\n    return data.prediction;\n}\n\n// Uso\ngetPrediction([1.2, 3.4, 5.6])\n    .then(pred => console.log('Resultado:', pred))\n    .catch(err => console.error(err));\n
\n\n

Método B: Scripts Python via child_process (para backend)

\n

Se você não precisa de um servidor separado, pode executar Python diretamente do Node.js. Isso é útil para tarefas pontuais — processamento de imagens, geração de relatórios.

\n
import { exec } from 'child_process';\nimport { promisify } from 'util';\n\nconst execPromise = promisify(exec);\n\nasync function runPythonScript(scriptPath: string, args: string[]): Promise<string> {\n    const command = `python3 ${scriptPath} ${args.join(' ')}`;\n    const { stdout, stderr } = await execPromise(command);\n    \n    if (stderr) throw new Error(`Erro Python: ${stderr}`);\n    return stdout.trim();\n}\n\n// Exemplo: passando JSON para Python\nconst result = await runPythonScript('./analyze.py', ['--data', '{"value": 42}']);\nconsole.log('Python respondeu:', result);\n
\n

Importante: essa abordagem é mais lenta que um microsserviço, mas não requer configuração de um servidor separado. Adequada para protótipos e CI/CD.

\n\n

Cenário 2: TypeScript + C++ — velocidade no limite da fantasia

\n

Quando é necessário processar vídeo, áudio ou criptografia, o Python pode não ser suficiente. É aqui que entra o C++ e seu poderoso aliado — WebAssembly (WASM).

\n\n

Compilação de C++ para WASM e chamada a partir do TypeScript

\n

Suponha que temos uma função simples em C++ que acelera a multiplicação de matrizes:

\n
// matrix.cpp\nextern "C" {\n    void multiply_matrices(float* a, float* b, float* result, int size) {\n        for (int i = 0; i < size; i++) {\n            for (int j = 0; j < size; j++) {\n                float sum = 0.0f;\n                for (int k = 0; k < size; k++) {\n                    sum += a[i * size + k] * b[k * size + j];\n                

Blogs

Book Recommendations