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:
-
npm install --save @types/webrtc
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).