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).