typescript typescript-typings

types typescript



Las tipografías de TypeScript me dan "index.d.ts no es un módulo" (5)

Estoy obteniendo el archivo node_modules/@types/webrtc/index.d.ts no es un módulo con este código:

import * as webrtc from "webrtc"; const peerConnection1 = new RTCPeerConnection();

He instalado los typings usando npm i @types/webrtc --save-dev . Al pasar sobre RTCPeerConnection en const peerConnection1 = new RTCPeerConnection(); Mostrar anotaciones de tipo en Visual Studio Code para que al menos el editor de código vea los tipos. La ejecución de tsc (o webpack con ts-loader ) falla con el error.

He intentado npm i webrtc --save en un intento equivocado para resolver esto, pero no cambió nada y realmente solo quiero las tipificaciones de todos modos, WebRTC está ahí en el navegador, no necesito un paquete para eso. (Apoyo a un lado.)

El archivo index.d.ts hecho no es un módulo, solo hace referencia a otros dos archivos con interfaces en ellos. Así que pensé en eliminar import * as webrtc from "webrtc"; Esperando que las tipificaciones sigan siendo visibles por tsc alguna manera. (Pero eso es imposible ya que excluyo node_modules en el archivo de configuración de TypeScript). Cuando lo hago, RTCPeerConnection ya no se reconoce.

Agregar /// <reference src="node_modules/@types/webrtc/" /> no ayudó, tsc dice que la sintaxis de la directiva de referencia no es /// <reference src="node_modules/@types/webrtc/" /> .

Puede ver un repositorio con una reproducción mínima aquí en GitLab . No estoy muy versado en la adquisición de mecanografía de TypeScript, así que perdona mi ignorancia si estoy haciendo todo esto mal.


No es necesario importar nada, ejecuta lo siguiente:

  1. npm install --save @types/webrtc
  2. actualizar tsconfig.json -

    "tipos": ["@ tipos / webrtc"]


Otra opción es agregar un nuevo archivo de declaración *.d.ts en su módulo, es decir:

declare module ''my-module'';


Probablemente quieras agregar

"types": ["webrtc"]

a su tsconfig.json , o menos preferiblemente, para usar

/// <reference types="webrtc" />

en sus archivos de origen. Aquí hay un ejemplo de ello en tu tsconfig.json :

{ "compilerOptions": { "target": "es5", "sourceMap": true, "noImplicitAny": true, "types": ["webrtc"] }, "exclude": [ "node_modules" ] }

Esto le indica a TypeScript que debe incluir declaraciones webrtc en su compilación


webrtc es parte del navegador; estás intentando importar un módulo. Simplemente importa la biblioteca (mecanografía):

import "webrtc";

es posible que deba usar "moduleResolution": "node" en las opciones del compilador.

Alternativamente, use los "types": ["webrtc"] opción del compilador y el compilador cargará automáticamente esos tipos para usted.


/// <reference types="@types/<your_types_module>" />

Puede o no querer hacer esto dependiendo de sus necesidades de construcción y estilo, pero esta parece ser la solución rápida (y sucia).