Ampliación de módulos en TypeScript
Agregarle a los tipos de otro módulo desde tu propio código.
import type { IncomingMessage } from "node:http";
declare module "node:http" {
interface IncomingMessage {
requestId?: string;
user?: { id: string; scopes: readonly string[] };
}
}
declare module "node:querystring" {
interface ParsedUrlQuery {
typestarTrace?: string;
}
}
export function tag(request: IncomingMessage, id: string): string {
request.requestId = id;
request.user = { id: "u-1", scopes: ["read"] as const };
return `${request.requestId}:${request.user.scopes.length}`;
}
console.log(typeof tag);
Cómo funciona
- Reabrir el módulo fusiona tus declaraciones dentro de él.
- El archivo debe ser un módulo, o la declaración es global.
- Así tipa un plugin el campo que agrega.
Palabras clave y builtins usados aquí
IncomingMessageasconstdeclareexportfromfunctionimportinterfacereadonlyreturnstringtype
El intento, en números
- Líneas
- 22
- Caracteres a escribir
- 512
- Tokens
- 117
- Ritmo de tres estrellas
- 110 tpm
Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 64 segundos.
Paso 3 de 3 en Módulos y declaraciones; paso 7 de 8 en Async y módulos.