{"id":15031286,"url":"https://github.com/definitelytyped/definitelytyped","last_synced_at":"2025-09-09T20:47:48.269Z","repository":{"id":4936488,"uuid":"6093316","full_name":"DefinitelyTyped/DefinitelyTyped","owner":"DefinitelyTyped","description":"The repository for high quality TypeScript type definitions.","archived":false,"fork":false,"pushed_at":"2025-09-09T15:28:44.000Z","size":760149,"stargazers_count":50309,"open_issues_count":715,"forks_count":30489,"subscribers_count":639,"default_branch":"master","last_synced_at":"2025-09-09T18:14:15.051Z","etag":null,"topics":["definition","dts","hacktoberfest","types","typescript","typescript-definitions","typings"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DefinitelyTyped.png","metadata":{"files":{"readme":"README.es.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":"docs/support-window.json","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2012-10-05T16:39:45.000Z","updated_at":"2025-09-09T16:58:24.000Z","dependencies_parsed_at":"2023-09-23T13:14:02.685Z","dependency_job_id":"a0b294f6-d3d3-40a5-97c9-e020c7e4ed9e","html_url":"https://github.com/DefinitelyTyped/DefinitelyTyped","commit_stats":{"total_commits":69864,"total_committers":19284,"mean_commits":3.622899813316739,"dds":0.9830384747509447,"last_synced_commit":"6484fe5f59d307ff27a5d98213e816fa838807c8"},"previous_names":["borisyankov/definitelytyped"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/DefinitelyTyped/DefinitelyTyped","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DefinitelyTyped%2FDefinitelyTyped","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DefinitelyTyped%2FDefinitelyTyped/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DefinitelyTyped%2FDefinitelyTyped/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DefinitelyTyped%2FDefinitelyTyped/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DefinitelyTyped","download_url":"https://codeload.github.com/DefinitelyTyped/DefinitelyTyped/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DefinitelyTyped%2FDefinitelyTyped/sbom","scorecard":{"id":38963,"data":{"date":"2025-08-11","repo":{"name":"github.com/DefinitelyTyped/DefinitelyTyped","commit":"a3e120322e4ff5b5c6aa19876c5f15d977dc97ef"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":6.9,"checks":[{"name":"Code-Review","score":8,"reason":"Found 26/30 approved changesets -- score normalized to 8","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":10,"reason":"30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: jobLevel 'contents' permission set to 'write': .github/workflows/UpdateCodeowners.yml:19","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/ghostbuster.yml:20","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/support-window.yml:22","Info: topLevel 'contents' permission set to 'read': .github/workflows/CI.yml:16","Info: topLevel 'contents' permission set to 'read': .github/workflows/UpdateCodeowners.yml:14","Warn: no topLevel permission defined: .github/workflows/format-and-commit.yml:1","Info: topLevel 'contents' permission set to 'read': .github/workflows/ghostbuster.yml:15","Info: topLevel 'contents' permission set to 'read': .github/workflows/lint-md.yml:7","Warn: no topLevel permission defined: .github/workflows/pnpm-cache.yml:1","Info: topLevel 'contents' permission set to 'read': .github/workflows/support-window.yml:17"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 27 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":8,"reason":"dependency not pinned by hash detected -- score normalized to 8","details":["Warn: npmCommand not pinned by hash: types/lodash/scripts/generate-all.sh:5","Warn: npmCommand not pinned by hash: types/lodash/scripts/generate-all.sh:12","Info:  18 out of  18 GitHub-owned GitHubAction dependencies pinned","Info:   7 out of   7 third-party GitHubAction dependencies pinned","Info:   0 out of   2 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}}]},"last_synced_at":"2025-08-14T20:58:37.731Z","repository_id":4936488,"created_at":"2025-08-14T20:58:37.731Z","updated_at":"2025-08-14T20:58:37.731Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274359083,"owners_count":25270696,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-09T02:00:10.223Z","response_time":80,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["definition","dts","hacktoberfest","types","typescript","typescript-definitions","typings"],"created_at":"2024-09-24T20:15:22.032Z","updated_at":"2025-09-09T20:47:43.224Z","avatar_url":"https://github.com/DefinitelyTyped.png","language":"TypeScript","readme":"# Definitely Typed [![Build Status](https://travis-ci.org/DefinitelyTyped/DefinitelyTyped.svg?branch=master)](https://travis-ci.org/DefinitelyTyped/DefinitelyTyped)\n\n\u003e El repositorio de definiciones de TypeScript de alta calidad.\n\n_You can also read this README in [English](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/README.md), [한국어](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/README.ko.md), [Русский](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/README.ru.md), [简体中文](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/README.zh-Hans.md), [Português](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/README.pt.md), [Italiano](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/README.it.md)\nand [日本語](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/README.ja.md)!_\n\nVea también el sitio web [definitelytyped.org](http://definitelytyped.org), aunque la información en este README está más actualizada.\n\n## ¿Qué son los `declaration files`?\n\nVea el [Manual de TypeScript](https://www.typescriptlang.org/docs/handbook/declaration-files/introduction.html).\n\n## ¿Cómo los obtengo?\n\n### npm\n\nEste es el método preferido. Solo está disponible para usuarios TypeScript 2.0+. Por ejemplo:\n\n```sh\nnpm install --save-dev @types/node\n```\n\nLos types deberían ser incluidos automáticamente por el compilador.\nVea más en el [manual](https://www.typescriptlang.org/docs/handbook/declaration-files/consumption.html).\n\nPara un paquete npm \"foo\", estos `typings` estarán en \"@types/foo\".\nSi no puedes encontrar tu paquete, búscalo en [TypeSearch](https://microsoft.github.io/TypeSearch/).\n\nSi aún no puedes encontrarlo, comprueba si el paquete ya [incluye](https://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html) los typings.\nEsto es provisto usualmente en el campo `\"types\"` o `\"typings\"` en el `package.json`,\no solo busca por cualquier archivo \".d.ts\" en el paquete e inclúyelo manualmente con un `/// \u003creference path=\"\" /\u003e`.\n\n### Support window\n\n\u003cimg src=\"docs/support-window.svg#gh-light-mode-only\" style=\"width:100%\"\u003e\n\u003cimg src=\"docs/support-window.svg#gh-dark-mode-only\" style=\"width:100%\"\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eVersiones más viejas de TypeScript\u003c/summary\u003e\n\nLos paquetes `@types` tienen etiquetas para las versiones de Typescript que explícitamente soportan, usualmente puedes obtener versiones más viejas de los paquetes anteriores a 2 años.\nPor ejemplo, si ejecutas `npm dist-tags @types/react`, observaras que Typescript 2.5 puede usar types para react@16.0, a su vez, Typescript 2.6 y 2.7 pueden usar types para react@16.4.\n\n| Etiqueta | Versión |\n| -------- | ------- |\n| latest   | 16.9.23 |\n| ts2.0    | 15.0.1  |\n| ...      | ...     |\n| ts2.5    | 16.0.36 |\n| ts2.6    | 16.4.7  |\n| ts2.7    | 16.4.7  |\n| ...      | ...     |\n\n#### TypeScript 1.*\n\n- Descárguelo manualmente desde la `master` branch de este repositorio\n- [Typings](https://github.com/typings/typings)~~ (use las alternativas preferidas, typings es obsoleto)\n- ~~[NuGet](https://nuget.org/packages?q=DefinitelyTyped)~~ (use las alternativas preferidas, la publicación DT type de nuget ha sido desactivada)\n\nTal vez debas añadir manualmente las [referencias](https://www.typescriptlang.org/docs/handbook/triple-slash-directives.html).\n\n\u003c/details\u003e\n\n## ¿Cómo puedo contribuir?\n\n¡Definitely Typed solo trabaja gracias a contribuidores como tú!\n\n### Prueba\n\nAntes de compartir tu mejora con el mundo, úselo usted mismo.\n\n#### Prueba editando un paquete existente\n\nPara agregar nuevas funciones puedes usar el [module augmentation](https://www.typescriptlang.org/docs/handbook/declaration-merging.html).\nTambién puedes editar directamente los types en `node_modules/@types/foo/index.d.ts`, o copiarlos de ahí y seguir los pasos explicados a continuación.\n\n#### Prueba un nuevo paquete\n\nAñade a tu `tsconfig.json`:\n\n```json\n\"baseUrl\": \"types\",\n\"typeRoots\": [\"types\"],\n```\n\n(También puedes usar `src/types`.)\nCrea un `types/foo/index.d.ts` que contenga declaraciones del módulo \"foo\".\nAhora deberías poder importar desde `\"foo\"` a tu código y te enviará a un nuevo tipo de definición.\nEntonces compila _y_ ejecuta el código para asegurarte que el tipo de definición en realidad corresponde a lo que suceda en el momento de la ejecución.\nUna vez que hayas probado tus definiciones con el código real, haz un [PR](#haz-un-pull-request)\nluego sigue las instrucciones para [editar un paquete existente](#editar-un-paquete-existente) o\n[crear un nuevo paquete](#crear-un-nuevo-paquete).\n\n### Haz un pull request\n\nUna vez que hayas probado tu paquete, podrás compartirlo en Definitely Typed.\n\nPrimero, [bifurca](https://docs.github.com/es/get-started/quickstart/fork-a-repo) este repositorio, instala [node](https://nodejs.org/), y luego ejecuta el comando `npm install`.\n\n#### Editar un paquete existente\n\n- `cd types/\u003cpackage to edit\u003e`\n- Haz cambios. Recuerda [editar las pruebas](#my-package-teststs).\n  Si realiza cambios importantes, no olvide [actualizar una versión principal](#quiero-actualizar-un-paquete-a-una-nueva-versión-principal).\n- También puede que quieras añadirle la sección \"Definitions by\" en el encabezado del paquete.\n  - Esto hará que seas notificado (a través de tu nombre de usuario en GitHub) cada vez que alguien haga un pull request o issue sobre el paquete.\n  - Haz esto añadiendo tu nombre al final de la línea, así como en `// Definitions by: Alice \u003chttps://github.com/alice\u003e, Bob \u003chttps://github.com/bob\u003e`.\n  - O si hay más personas, puede ser multiline\n  ```typescript\n  // Definitions by: Alice \u003chttps://github.com/alice\u003e\n  //                 Bob \u003chttps://github.com/bob\u003e\n  //                 Steve \u003chttps://github.com/steve\u003e\n  //                 John \u003chttps://github.com/john\u003e\n  ```\n- [Ejecuta `npm test \u003cpackage to test\u003e`](#running-tests).\n\nCuando hagas un PR para editar un paquete existente, `dt-bot` deberá @-mencionar a los autores previos.\nSi no lo hace, puedes hacerlo en el comentario asociado con el PR.\n\n#### Crear un nuevo paquete\n\nSi eres el autor de la librería, o puedes hacer un pull request a la biblioteca, [bundle types](https://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html) en vez de publicarlo en Definitely Typed.\n\nSi estás agregando typings para un paquete npm, crea un directorio con el mismo nombre.\nSi el paquete al que le estás agregando typings no es para npm, asegúrate de que el nombre que escojas no genere problemas con el nombre del paquete en npm.\n(Puedes usar `npm info \u003cmy-package\u003e` para verificar la existencia del paquete `\u003cmy-package\u003e`.)\n\nTu paquete debería tener esta estructura:\n\n| Archivo                                        | Propósito                                                                                                                                   |\n| ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |\n| `index.d.ts`                                   | Este contiene los typings del paquete.                                                                                                      |\n| [`\u003cmy-package\u003e-tests.ts`](#my-package-teststs) | Este contiene una muestra del código con el que se realiza la prueba de escritura. Este código _no_ es ejecutable, pero sí es type-checked. |\n| [`tsconfig.json`](#tsconfigjson)               | Este permite ejecutar `tsc` dentro del paquete.                                                                                             |\n\nGeneralas ejecutando `npm install -g dts-gen` y `dts-gen --dt --name \u003cmy-package\u003e --template module`.\nVe todas las opciones en [dts-gen](https://github.com/microsoft/DefinitelyTyped-tools/tree/main/packages/dts-gen).\n\nLos miembros de Definitely Typed frecuentemente monitorean nuevos PRs, pero ten en mente que la cantidad de PRs podrían ralentizar el proceso.\n\nPara un buen paquete de ejemplo, vea [base64-js](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/base64-js).\n\n#### Remover un paquete\n\nCuando un paquete [bundles](https://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html) sus propios tipos, estos tipos deberán ser removidos de Definitely Typed para evitar que generen confusión.\n\nSe puede remover ejecutando `pnpm run not-needed -- \u003ctypingsPackageName\u003e \u003casOfVersion\u003e [\u003clibraryName\u003e]`.\n\n- `\u003ctypingsPackageName\u003e`: Este es el nombre del directorio que tienes que eliminar.\n- `\u003casOfVersion\u003e`: Un stub será publicado a `@types/\u003ctypingsPackageName\u003e` con esta versión. Debería ser más grande que cualquier versión publicada actualmente.\n- `\u003clibraryName\u003e`: Un nombre descriptivo de la librería, p.ej. \"Angular 2\" en vez de \"angular2\". (Si es omitido, será idéntico a `\u003ctypingsPackageName\u003e`.)\n\nCualquier otro paquete en Definitely Typed que referencie el paquete eliminado deberá ser actualizado para referenciar los tipos bundled. para hacer esto, [añade `package.json`](#packagejson) con `\"dependencies\": { \"\u003clibraryName\u003e\": \"x.y.z\" }`.\n\nSi un paquete nunca estuvo en Definitely Typed, no será necesario añadirlo a `notNeededPackages.json`.\n\n#### Running tests\n\nRealiza una prueba ejecutando `npm test \u003cpackage to test\u003e` donde `\u003cpackage to test\u003e` es el nombre de tu paquete.\nEste script utiliza [dtslint](https://github.com/microsoft/DefinitelyTyped-tools/tree/master/packages/dtslint).\n\n#### Naming\n\nSi estás agregando typings para un paquete npm, crea un directorio con el mismo nombre.\nSi el paquete al que le estás agregando typings no es para npm, asegúrate de que el nombre que escojas no genere problemas con el nombre del paquete en npm.\n(Puedes usar `npm info \u003cmy-package\u003e` para verificar la existencia del paquete `\u003cmy-package\u003e`.)\n\nSi un non-npm package entra en conflicto con un paquete npm existente, intenta añadir `-browser` al final del nombre para obtener `\u003cmy-package\u003e-browser`.\n\n#### `\u003cmy-package\u003e-tests.ts`\n\nDebería haber un archivo `\u003cmy-package\u003e-tests.ts`, el cual es considerado tu archivo de prueba, junto con cualquier archivo `*.ts` que importe.\nSi no ves ningún archivo de prueba en la carpeta del módulo, crea un `\u003cmy-package\u003e-tests.ts`.\nEstos archivos son usados para validar la API exportada desde los archivos `*.d.ts` los cuales son enviados como `@types/\u003cmy-package\u003e`.\n\nLos cambios a los archivos `*.d.ts` deberían incluir un cambio correspondiente en un archivo `*.ts` el cual muestre la API siendo usada, para que alguien no rompa accidentalmente el código en el que dependes.\nSi no ves ningún archivo de prueba en la carpeta del módulo, crea un `\u003cmy-package\u003e-tests.ts`.\n\nPor ejemplo, este cambio a una función en un archivo `.d.ts` añadiendo un nuevo parámetro a una función:\n\n`index.d.ts`:\n\n```diff\n- export function twoslash(body: string): string\n+ export function twoslash(body: string, config?: { version: string }): string\n```\n\n`\u003cmy-package\u003e-tests.ts`:\n\n```diff\nimport {twoslash} from \"./\"\n\n// $ExpectType string\nconst result = twoslash(\"//\")\n\n+ // Handle options param\n+ const resultWithOptions = twoslash(\"//\", { version: \"3.7\" })\n+ // When the param is incorrect\n+ // @ts-expect-error\n+ const resultWithOptions = twoslash(\"//\", {  })\n```\n\nSi estás preguntándote por dónde empezar con el código de prueba, los ejemplos en el README del módulo son un buen lugar para comenzar.\n\nPuedes [validar tus cambios](#running-tests) con `npm test \u003cpackage to test\u003e` desde la raíz de este repositorio, el cual toma en cuenta los archivos cambiados.\n\nPara afirmar que una expresión es de un tipo dado, utiliza `$ExpectType`. Para afirmar que una expresión causa un error de compilación, utiliza `@ts-expect-error`.\n\n```js\n// $ExpectType void\nf(1);\n\n// @ts-expect-error\nf(\"one\");\n```\n\nPara más detalles, vea el [dtslint](https://github.com/microsoft/DefinitelyTyped-tools/tree/master/packages/dtslint#write-tests) readme.\n\n#### Linter: `.eslintrc.json`\n\nEl archivo de configuración del linter, `tslint.json` debería contener `{ \"extends\": \"@definitelytyped/dtslint/dt.json\" }`, y no reglas adicionales.\n\nSi por alguna razón alguna regla necesita ser deshabilitada, [deshabilítala para esa línea específica](https://palantir.github.io/tslint/usage/rule-flags/#comment-flags-in-source-code:~:text=%2F%2F%20tslint%3Adisable%2Dnext%2Dline%3Arule1%20rule2%20rule3...%20%2D%20Disables%20the%20listed%20rules%20for%20the%20next%20line) usando `// tslint:disable-next-line:[ruleName]` — no para todo el paquete, para que la deshabilitación pueda ser revisada. (Hay algunas configuraciones de lint heredadas que tienen contenido adicional, pero esto no debería ocurrir en un nuevo trabajo.)\n\n#### `tsconfig.json`\n\n`tsconfig.json` debería tener `noImplicitAny`, `noImplicitThis`, `strictNullChecks`, y `strictFunctionTypes` configurados a `true`.\n\nTambién puedes configurar el `tsconfig.json` para añadir nuevos archivos, para agregar un `\"target\": \"es6\"` (necesitado por las funciones asíncronas), para agregar a la `\"lib\"`, o para agregar la opción de compilación `\"jsx\"`.\n\n#### `package.json`\n\nNormalmente no lo necesitarás. Cuando publicas un paquete normalmente nosotros automáticamente crearemos un `package.json` para eso.\nUn `package.json` puede ser incluido por el bien de especificar dependencias. Aquí tienen un [ejemplo](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/pikaday/package.json).\nNo aceptamos otros campos, tales como `\"description\"`, para que sean definidos manualmente.\nAdemás, si necesitas referencia a una versión anterior de typings, debes hacerlo añadiendo `\"dependencies\": { \"@types/\u003clibraryName\u003e\": \"x.y.z\" }` al `package.json`.\n\n#### `OTHER_FILES.txt`\n\nSi un archivo no es probado ni referenciado en `index.d.ts`, añádelo a un archivo llamado `OTHER_FILES.txt`. Este archivo es una lista de otros archivos que necesitan ser incluidos en el paquete de typings, un archivo por línea.\n\n#### Errores comunes\n\n- Primero, sigue el consejo del [manual](https://www.typescriptlang.org/docs/handbook/declaration-files/do-s-and-don-ts.html).\n- Formatear: Utiliza 4 espacios.\n- `function sum(nums: number[]): number`: Utiliza `ReadonlyArray` si una función no escribe a sus parámetros.\n- `interface Foo { new(): Foo; }`:\n  Este define el tipo de objeto que esten nuevos. Probablemente quieras `declare class Foo { constructor(); }`.\n- `const Class: { new(): IClass; }`:\n  Prefiere usar una declaración de clase `class Class { constructor(); }` En vez de una nueva constante.\n- `getMeAT\u003cT\u003e(): T`:\n  Si un tipo de parámetro no aparece en los tipos de ningún parámetro, no tienes una función genérica, solo tienes un afirmación del tipo disfrazado.\n  Prefiera utilizar una afirmación de tipo real, p.ej. `getMeAT() as number`.\n  Un ejemplo donde un tipo de parámetro es aceptable: `function id\u003cT\u003e(value: T): T;`.\n  Un ejemplo donde no es aceptable: `function parseJson\u003cT\u003e(json: string): T;`.\n  Una excepción: `new Map\u003cstring, number\u003e()` está bien.\n- Utilizando los tipos `Function` y `Object` casi nunca es una buena idea. En 99% de los casos es posible especificar un tipo más específico. Los ejemplos son `(x: number) =\u003e number` para [funciones](https://www.typescriptlang.org/docs/handbook/functions.html#function-types) y `{ x: number, y: number }` para objetos. Si no hay certeza en lo absoluto del tipo, [`any`](https://www.typescriptlang.org/docs/handbook/basic-types.html#any) es la opción correcta, no `Object`. Si el único hecho conocido sobre el tipo es que es un objecto, usa el tipo [`object`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-2.html#object-type), no `Object` o `{ [key: string]: any }`.\n- `var foo: string | any`:\n  Cuando es usado `any` en un tipo de unión, el tipo resultante todavía es `any`. Así que mientras la porción `string` de este tipo de anotación puede _verse_ útil, de hecho, no ofrece ningún typechecking adicional más que un simple `any`.\n  Dependiendo de la intención, una alternativa aceptable puede ser `any`, `string`, o `string | object`.\n\n### Propietarios de Definiciones\n\nDT tiene el concepto de \"Propietarios de Definiciones\" que son personas que desean mantener la calidad de los tipos de un módulo en particular.\n\n- Agregarte a la lista hará que recibas notificaciones (a través de tu nombre de usuario de GitHub) cada vez que alguien haga una solicitud de extracción o informe sobre el paquete.\n- Tus revisiones de solicitudes de extracción tendrán una mayor importancia para [el bot](https://github.com/microsoft/DefinitelyTyped-tools/tree/main/packages/mergebot) que mantiene este repositorio.\n- Los mantenedores de DT confían en los propietarios de las definiciones para asegurar un ecosistema estable, así que por favor, no te agregues ligeramente.\n\nPara agregarte como Propietario de Definiciones:\n\n- Agrega tu nombre al final de la línea, como en `// Definitions by: Alice \u003chttps://github.com/alice\u003e, Bob \u003chttps://github.com/bob\u003e`.\n- O si hay más personas, puede ser en varias líneas\n  ```typescript\n  // Definitions by: Alice \u003chttps://github.com/alice\u003e\n  //                 Bob \u003chttps://github.com/bob\u003e\n  //                 Steve \u003chttps://github.com/steve\u003e\n  //                 John \u003chttps://github.com/john\u003e\n  ```\n\nUna vez a la semana, los Propietarios de Definiciones se sincronizan con el archivo [.github/CODEOWNERS](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/.github/CODEOWNERS), que es nuestra fuente de verdad.\n\n## FAQ\n\n#### ¿Cuál es exactamente la relación entre este repositorio y los paquetes de `@types` en npm?\n\nLa `master` branch es automáticamente publicada en el alcance de los `@types` en npm gracias a los [DefinitelyTyped-tools](https://github.com/microsoft/DefinitelyTyped-tools/tree/master/packages/publisher).\n\n#### He enviado un pull request. ¿Cuánto tardará en ser merged?\n\nEsto depende, pero la mayoría de los pull requests serán merged en alrededor de una semana. PRs que hayan sido aprobados por un autor listado en el encabezado de las definiciones usualmente son merged más rápidamente; PRs para nuevas definiciones tomarán más tiempo ya que requieren más revisiones de los mantenedores. Cada PR es revisado por un miembro de TypeScript o Definitely Typed antes de ser merged, por favor sé paciente debido a que factores humanos pueden causar retrasos. Revisa el [Pull Request Status Board](https://github.com/orgs/DefinitelyTyped/projects/1) para ver el progreso mientras los mantenedores trabajan en los PRs abiertos.\n\n#### Mi PR ha sido merged; ¿cuándo será actualizado el paquete de `@types` npm?\n\nLos paquetes npm deberán ser actualizados en unas cuantas horas. Si ha pasado más de 24 horas, menciona a @RyanCavanaugh y/o a @andy-ms en el PR para investigar.\n\n#### Estoy escribiendo una definición que depende de otra definición. Debería utilizar `\u003creference types=\"\" /\u003e` o una import?\n\nSi el módulo al cual te estás refiriendo es un módulo externo (utiliza `export`), utilice una import.\nSi el módulo al cual te refieres es un módulo ambiente (utiliza `declare module`, o simplemente declara las globales), utilice `\u003creference types=\"\" /\u003e`.\n\n#### Algunos paquetes no tienen `tslint.json`, y algunos `tsconfig.json` no contienen `\"noImplicitAny\": true`, `\"noImplicitThis\": true`, o `\"strictNullChecks\": true`.\n\nEntonces están equivocados. Puedes ayudar enviando un pull request para arreglarlos.\n\n#### Puedo pedir una definition?\n\nAquí están las [definiciones solicitadas actualmente](https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/categories/request-a-new-types-package).\n\n#### ¿Qué pasa con las type definitions para el DOM?\n\nSi las types son parte de los estándares web, estas deberán ser contribuidas a [TSJS-lib-generator](https://github.com/Microsoft/TSJS-lib-generator) para que se hagan parte de la librería predeterminada `lib.dom.d.ts`.\n\n#### Un paquete utiliza `export =`, pero prefiero utilizar las import predeterminadas. ¿Puedo cambiar `export =` por `export default`?\n\nSi el import predeterminado trabaja en tu ambiente, considera hacer un cambio en la opción de compilación [`--allowSyntheticDefaultImports`](https://www.typescriptlang.org/docs/handbook/compiler-options.html) opción compilar.\nNo cambies la type definition si es preciso.\nPara un paquete npm, `export =` es exacto si `node -p 'require(\"foo\")'` es la export, y `export default` es exacto si `node -p 'require(\"foo\").default'` es el export.\n\n#### Quiero usar las características de TypeScript 3.3 o superior.\n\nEntonces deberás añadir un comentario a la última línea de la definición en el encabezado (despues de `// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped`): `// Minimum TypeScript Version: 3.3`.\n\n#### Quiero añadir un DOM API que no está presente en TypeScript por defecto.\n\nEsto puede pertenecer a [TSJS-Lib-Generator](https://github.com/Microsoft/TSJS-lib-generator#readme). Vea las guías allí.\nSi el estándar sigue siendo un borrador, este pertenece aquí.\nUtilice un nombre que empiece con `dom-` e incluya un link al estándar como el \"Project\" con el link en el encabezado.\nCuando ya no sea un borrador, lo podremos eliminar desde DefinitelyType y hacer obsoleto el paquete `@types` asociado.\n\n#### Quiero actualizar un paquete a una nueva versión principal\n\nSi planeas continuar actualizando la versión anterior del paquete, puedes crear una subcarpeta con la versión actual p.ej. `v2`, y copia los archivos existentes. Si es así, necesitarás:\n\n1. Actualiza las rutas relativas en `tsconfig.json` al igual que `tslint.json`.\n2. Añadir reglas de mapeo de rutas para asegurarte de que la prueba se está ejecutando contra la versión prevista.\n\nPor ejemplo [history v2 `tsconfig.json`](https://github.com/%44efinitelyTyped/DefinitelyTyped/blob/1253faabf5e0d2c5470db6ea87795d7f96fef7e2/types/history/v2/tsconfig.json) se ve así:\n\n```json\n{\n    \"compilerOptions\": {\n        \"baseUrl\": \"../../\",\n        \"typeRoots\": [\"../../\"],\n        \"paths\": {\n            \"history\": [\"history/v2\"]\n        }\n    },\n    \"files\": [\n        \"index.d.ts\",\n        \"history-tests.ts\"\n    ]\n}\n```\n\nSi hay otros paquetes en Definitely Typed que son incompatibles con la nueva versión, necesitarás mapear las rutas a la versión anterior. También deberá hacer esto para los paquetes que dependen de paquetes que dependen de una version anterior.\n\nPor ejemplo, `browser-sync` depende de `micromatch@2`, así que [browser-sync `tsconfig.json`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/browser-sync/tsconfig.json) tiene una ruta mapeada a \"micromatch\": `[ \"micromatch/v2\" ]`;\ntransitivo así mismo, `browser-sync-webpack-plugin` (que depende de `browser-sync`) también añade una ruta mapeada en su [tsconfig.json](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/browser-sync-webpack-plugin/tsconfig.json).\n\nAdemás, `/// \u003creference types=\"..\" /\u003e` no trabajará con rutas mapeadas, así que las dependencias deberán utilizar `import`.\n\n#### ¿Cómo escribo definitions para paquetes que pueden ser usados globalmente y como un módulo?\n\nEl manual de TypeScript contiene excelente [información general para escribir definiciones](https://www.typescriptlang.org/docs/handbook/declaration-files/introduction.html), además [este archivo de definiciones de ejemplo](https://www.typescriptlang.org/docs/handbook/declaration-files/templates/global-modifying-module-d-ts.html) el cual muestra como crear una definición utilizando la sintaxis de módulo en ES6, asi como también especificando objetos que son disponibles en el alcance global. Esta técnica es demostrada prácticamente en la [definición para `big.js`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/big.js/index.d.ts), el cual es una librería que puede ser cargada globalmente a través de una etiqueta script en una página web, o importada vía require o imports estilo ES6.\n\nPara probar como puede ser usada tu definición cuando se refieren globalmente o como un módulo importado, crea una carpeta `test`, y coloca dos archivos de prueba en él. nombra uno `YourLibraryName-global.test.ts` y el otro `YourLibraryName-module.test.ts`. El archivo de prueba _global_ debe ejercer la definición de acuerdo como va a ser usado en un script cargado en una página web donde la librería estará disponible en el alcance global - en este escenario no debes de especificar la sentencia de import. El archivo _módulo_ de prueba debe de ejercer la definición de acuerdo a como va a ser utilizado cuando sea importado (incluyendo las sentencias `import`). Si especificas una propiedad `files` en tu archivo `tsconfig.json`, asegurate de incluir ambos archivos de prueba. Un [ejemplo práctico de esto](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/big.js/test) es también disponible en la definición de `big.js`.\n\nPor favor tenga en cuenta que no es necesario para ejercer plenamente la definición en cada archivo de prueba - Es suficiente con probar solo los elementos globalmente accesibles en la prueba de archivos globales y ejercer la definición en el módulo del archivo de prueba, o viceversa.\n\n#### ¿Qué pasa con paquetes scoped?\n\nTypes para un paquete scoped `@foo/bar` deberán ir en `types/foo__bar`. tenga en cuenta el doble guión bajo.\n\nCuando `dts-gen` es utilizado como scaffold en un paquete scoped, las propiedades `paths` deberán ser adaptadas manualmente en el paquete generado\n`tsconfig.json` para referenciar correctamente el paquete scoped:\n\n```json\n{\n    \"paths\": {\n        \"@foo/*\": [\"foo__*\"]\n    }\n}\n```\n\n#### Debería añadir un namespace que no exporte un módulo que utilice que utilice imports estilo ES6?\n\nAlgunos paquetes, como [chai-http](https://github.com/chaijs/chai-http), exportan una función.\n\nimportar este módulo con un ES6 style import de forma `import * as foo from \"foo\";` conduce al error:\n\n\u003e error ts2497: El módulo 'foo' se resuelve en una entidad que no es un módulo y no se puede importar mediante esta construcción\n\nEste error puede ser suprimido al unir la declaración de una función con un namespace vacío del mismo nombre pero esta práctica no es recomendable.\nEsto es un citado común [Respuestas de Stack Overflow](https://stackoverflow.com/questions/39415661/what-does-resolves-to-a-non-module-entity-and-cannot-be-imported-using-this) con respecto a este asunto.\n\nEs más apropiado importar este módulo utilizando la sintaxis `import foo = require(\"foo\");`, o utilizando una importación predeterminada como `import foo from \"foo\";` si usas la bandera `--allowSyntheticDefaultImports` si la ejecución de tu módulo soporta un esquema de interoperación para módulos no ECMAScript como tal.\n\n## Licencia\n\nEste proyecto es licenciado bajo la licencia MIT.\n\nLos derechos de autor de cada archivo de definición son respectivos de cada contribuidor listado al comienzo de cada archivo de definición.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdefinitelytyped%2Fdefinitelytyped","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdefinitelytyped%2Fdefinitelytyped","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdefinitelytyped%2Fdefinitelytyped/lists"}