JavaScript IntelliSense
Visual Studio poskytuje výkonné prostředí pro úpravy JavaScriptu, které je hned k dispozici. Visual Studio využívá jazykovou službu založenou na TypeScriptu a nabízí bohatší technologii IntelliSense, podporu moderních funkcí JavaScriptu a vylepšené funkce produktivity, jako je přejít k definici, refaktoring a další.
Poznámka
Od Visual Studio 2017 používá služba jazyka JavaScript nový modul pro službu jazyka (s názvem Salsa). Podrobnosti jsou součástí tohoto článku a můžete si také přečíst tento blogový příspěvek. Nové prostředí pro úpravy se také většinou týká Visual Studio Code. Další informace VS Code v dokumentu o nárocích.
Další informace o obecných funkcích Technologie IntelliSense pro Visual Studio tématu Používání technologie IntelliSense.
Co je nového ve službě jazyka JavaScript v Visual Studio 2017
Od roku Visual Studio 2017 zobrazuje Technologie IntelliSense jazyka JavaScript mnohem více informací o seznamech parametrů a členů. Tyto nové informace poskytuje služba jazyka TypeScript, která používá statickou analýzu na pozadí k lepšímu pochopení vašeho kódu.
TypeScript používá k sestavení těchto informací několik zdrojů:
- IntelliSense na základě odvození typu
- IntelliSense založené na JSDoc
- Technologie IntelliSense založená na souborech deklarací TypeScriptu
- Automatické získání definic typů
IntelliSense na základě odvození typu
V JavaScriptu většinou nejsou k dispozici žádné explicitní informace o typu. Naštěstí je obvykle poměrně snadné zjistit typ na základě kontextu okolního kódu. Tento proces se nazývá odvození typu.
Pro proměnnou nebo vlastnost je typ obvykle typ hodnoty použité k jeho inicializaci nebo přiřazení nejnovější hodnoty.
var nextItem = 10;
nextItem; // here we know nextItem is a number
nextItem = "box";
nextItem; // now we know nextItem is a string
Pro funkci lze návratový typ odvodit z návratové příkazy.
U parametrů funkce se v současné době odvozování nevyvozuje, ale existují způsoby, jak to obchádovat pomocí souborů JSDoc nebo TypeScript .d.ts (viz další části).
Kromě toho se odvozování
- Třídy typu "ES3" určené pomocí funkce konstruktoru a přiřazení k vlastnosti prototypu.
- Vzory modulů ve stylu CommonJS, zadané jako přiřazení vlastností objektu nebo přiřazení
exportskmodule.exportsvlastnosti
function Foo(param1) {
this.prop = param1;
}
Foo.prototype.getIt = function () { return this.prop; };
// Foo will appear as a class, and instances will have a 'prop' property and a 'getIt' method.
exports.Foo = Foo;
// This file will appear as an external module with a 'Foo' export.
// Note that assigning a value to "module.exports" is also supported.
IntelliSense založené na JSDoc
Pokud odvození typu neposkytuje informace o požadovaném typu (nebo pro podporu dokumentace), informace o typu je možné zadat explicitně prostřednictvím poznámek JSDoc. Pokud například chcete dát částečně deklarovaný objekt určitému typu, můžete použít @type značku , jak je znázorněno níže:
/**
* @type {{a: boolean, b: boolean, c: number}}
*/
var x = {a: true};
x.b = false;
x. // <- "x" is shown as having properties a, b, and c of the types specified
Jak už bylo zmíněno, parametry funkce nejsou nikdy odvozeny. Pomocí značky JSDoc však můžete do parametrů funkce přidat @param i typy.
/**
* @param {string} param1 - The first argument to this function
*/
function Foo(param1) {
this.prop = param1; // "param1" (and thus "this.prop") are now of type "string".
}
Poznámky JsDoc, které jsou aktuálně podporované, najdete v tématu Podpora JSDoc v JavaScriptu.
Technologie IntelliSense založená na souborech deklarací TypeScriptu
Vzhledem k tomu, že JavaScript a TypeScript jsou teď založené na stejné jazykové službě, jsou schopné pracovat bohatším způsobem. Například JavaScript IntelliSense lze zadat pro hodnoty deklarované v souboru .d.ts (viz dokumentace k TypeScriptu)a typy, jako jsou rozhraní a třídy deklarované v TypeScriptu, jsou k dispozici pro použití jako typy v komentářích JsDoc.
Níže si ukážeme jednoduchý příklad definičního souboru TypeScriptu, který poskytuje takové informace o typu (prostřednictvím rozhraní) do souboru JavaScriptu ve stejném projektu (pomocí JsDoc značky ).

Automatické získání definic typů
Ve světě TypeScriptu mají nejoblíbenější javascriptové knihovny svá rozhraní API popsaná soubory .d.ts a nejběžnější úložiště pro takové definice je typu DefinitelyTyped.
Ve výchozím nastavení se služba jazyka Salsa pokusí zjistit, které knihovny JavaScriptu se používají, a automaticky stáhne odpovídající soubor .d.ts, který knihovnu popisuje, a automaticky na tento soubor odkazuje, aby byla k dispozici bohatší funkce IntelliSense. Soubory se stáhnou do mezipaměti ve složce uživatele ve složce %LOCALAPPDATA%\Microsoft\TypeScript.
Poznámka
Tato funkce je ve výchozím nastavení zakázaná při použitítsconfig.jsv konfiguračním souboru, ale může být nastavená na povolenou, jak je uvedeno níže.
V současné době funguje automatické zjišťování závislostí stažených z npm (čtením souboru package.json), Boweru (čtením souboru bower.json) a volných souborů ve vašem projektu, které odpovídají seznamu přibližně 400 nejoblíbenějších javascriptových knihoven. Pokud máte například v projektujquery-1.10.min.js, soubor jquery.d.ts se načte a načte, aby byl k dispozici lepší prostředí pro úpravy. Tento soubor .d.ts nebude mít žádný vliv na váš projekt.
Pokud automatické pořízení používat nepřejete, zakažte ho přidáním konfiguračního souboru, jak je uvedeno níže. Definiční soubory můžete umístit přímo do projektu ručně.