Cómo importar archivos Intellisense en VSCode (Código de Visual Studio)


No estoy seguro de entender cómo funciona intellisense para el nuevo editor de texto VSCode de Microsoft. En el docs bajo el encabezado"Great Code Editing Experience", muestra una advertencia bajo la variable global de nodo __dir y ofrece una sugerencia de bombilla para agregar una referencia a un archivo d. ts para que pueda obtener intellisense para nodo:

introduzca la descripción de la imagen aquí

Tengo 2 preguntas:

1-Cómo puedo importar DefinitelyTyped archivos (d. ts) directamente (sin editor sugerirlo) o tengo que copiarlos de la fuente de github y ponerlos en un directorio de typings?

2 - ¿Puedo obtener intellisense para cualquier biblioteca que tenga una definición de typescript? Probé lo siguiente, pero cuando escribo express. o when., no recibo ningún intellisense. Sin embargo, obtengo node intellisense.

/// <reference path="../typings/node/node.d.ts"/>
/// <reference path="../typings/express/express.d.ts" />

var when    = require('when')
  , express = require('express')
  , gulp    = require('gulp')
Author: kurtcorbett, 2015-04-30

7 answers

ACTUALIZACIÓN: agosto de 2016: TSD ahora está depreciado. en lugar de utilizar https://www.npmjs.com/package/typings

npm install typings --global

O

Si usa VS2015 NodeJS v1. 2 lanzado el 29 de julio de 2016, entonces [email protected] se instala automáticamente para usted durante el primer uso:

Executing command 'npm install "C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO 14.0\COMMON7\IDE\EXTENSIONS\MICROSOFT\NODE.JS TOOLS FOR VISUAL STUDIO\1.2\TypingsAcquisitionTool"
[email protected] ..\..\..\..\..\node_modules\ntvs-typings-acquisition-tool
├── [email protected]
└── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected])

-----Respuesta Original-----

Existe un gestor de paquetes para los archivos de definición de Typescript. Este es un repositorio impulsado por la comunidad que contiene definiciones de Typescript para muchos biblioteca.

Puede instalar tsd siguiendo las instrucciones aquí.

Una vez que instale tsd globalmente, puede instalar paquetes desde la raíz de su proyecto en la línea de comandos de la siguiente manera:

$ tsd install express --save

Esto creará un directorio typings si no existe y añadirá un directorio express con un archivo express.d.ts dentro.

Pantallazo

También crea un archivo tsd.d.ts que contiene las referencias a todos sus archivos tsd. Si instalo algunos TSD más, aquí está lo que parece.

introduzca la descripción de la imagen aquí

Ahora para acceder a mis archivos tsd, todo lo que necesito hacer es hacer referencia a su ruta en la parte superior de mi código con /// <reference path="typings/tsd.d.ts" />

introduzca la descripción de la imagen aquí

Ahora obtengo intellisense.

introduzca la descripción de la imagen aquí

 48
Author: kurtcorbett,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-05 04:38:56

En enero de 2016 el paquete "tsd" fue obsoleto. Utilice el paquete "typings" en su lugar.

Véase https://github.com/DefinitelyTyped/tsd/issues/269

Y puede encontrar en VS Code (ext install) dos extensiones: Typings Installer y Typings que ayuda a instalar archivos de definición d.ts fácilmente desde VS Code.

 16
Author: Dima Fomin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-29 13:42:54

Compruebe si está trabajando en Modo de proyecto explícito (REF: https://code.visualstudio.com/Docs/languages/javascript#_javascript-projects-jsconfigjson)

¿Qué está pasando?

En el Modo de Proyecto Explícito , VS Code usa "main.d. ts" en la carpeta typings para intellisense. Este archivo tendrá referencia a otros archivos de definición y por lo tanto el intellisence funciona perfecto. En mi caso, el principal.d. ts se parece a lo siguiente

/// <reference path="main/ambient/express-serve-static-core/index.d.ts" />
/// <reference path="main/ambient/express/index.d.ts" />
/// <reference path="main/ambient/node/index.d.ts" />
/// <reference path="main/ambient/serve-static/index.d.ts" />

En el Modo de Alcance del archivo , VS Code no comprobará las definiciones de tipos y, por lo tanto, no tendrá intelisencia. En tal caso, para agregar intellisence, la etiqueta de referencia será útil ya que está refiriendo la definición manualmente. Si se está refiriendo manualmente, refiera el principal.d. ts bajo los tipos en lugar de ir a la definición de una biblioteca específica. Esto hará que su código sea menos denso de referencia.

También tenga en cuenta que el equivalente de typescript para jsconfig.json es tsconfig.json que también establecerá el editor en modo de proyecto Explícito.

 3
Author: Mahesh V S,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-02 11:08:07

Puede lograr esto con jsconfig.archivo json después del lanzamiento de abril de 2017.

Contenido de muestra del archivo:

{
 "typeAcquisition": {
     "include": [
         "jquery",
          "underscore"
     ]
   }
}

Ver el jsoncifg.referencia json para VSCode aquí.

 2
Author: kepils,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-01 14:57:01

Conseguí que express intellisense trabajara con express descargando el archivo express.d.ts desde https://github.com/borisyankov/DefinitelyTyped , y referenciándolo con una ruta relativa a mi dir de proyecto:

/// <reference path="express.d.ts"/>

Todavía estoy tratando de encontrar a qué se refiere /typings. También podría ser bueno configurar los archivos d.ts como parte de la configuración del proyecto.

Editar:

Lo encontré.

~/Downloads/VSCode-osx
▶ find . -type d -name "typings"
./Visual Studio Code.app/Contents/Resources/app/node_modules/applicationinsights/Scripts/typings

Así que tienen node, async, y applicationInsights incluido en el OSX .aplicación por defecto. Cualquier otra cosa que desee, supongo que puede incluir simplemente como lo hice anteriormente.

Editar Editar:

El administrador de paquetes tsd mencionado por @kurtcorbett se ve bien, use eso.

 1
Author: Andrew Lavers,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-03 03:00:49

Si desea instalar automáticamente las definiciones de tipos para sus paquetes, puede descargar la extensión Types auto installer. Observará sus package.json y bower.json e instalará automáticamente los tipos para usted.

Creo que la mejor parte de esta extensión es que no tiene que incluir las líneas /// reference en su código porque instala los tipos a través de npm.

 1
Author: tamj0rd2,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-03 08:47:19

Lo que hice fue tocar la bombilla y elegí la opción que decía agregar referencia a nodo/nodo.d. ts al proyecto.

Después de eso escribí: /// en la parte superior del editor y funcionó para mí.

 0
Author: Bandito11,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-01 04:13:28