JavaScript IntelliSense

Visual Studio poskytuje výkonné prostředí pro úpravy JavaScriptu přímo od pole. Visual Studio využívá jazykovou službu založenou na TypeScriptu, poskytuje bohatou technologii IntelliSense, podporu moderních funkcí JavaScriptu a funkcí pro produktivitu, jako je Přejít k definici, refaktoring a další.

Další informace o obecné funkci IntelliSense sady Visual Studio naleznete v tématu Použití technologie IntelliSense.

JavaScript IntelliSense zobrazuje informace o parametrech a seznamech členů. Tyto informace poskytuje služba jazyka TypeScript, která používá statickou analýzu na pozadí, aby lépe porozuměla vašemu kódu.

TypeScript používá k sestavení těchto informací několik zdrojů:

IntelliSense na základě odvození typu

Ve většině případů v JavaScriptu nejsou k dispozici žádné explicitní informace o typu. Naštěstí je obvykle poměrně snadné zjistit typ vzhledem k kontextu okolního kódu. Tento proces se nazývá odvození typu.

U proměnné nebo vlastnosti je typ hodnoty, která se používá k 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

U funkce lze návratový typ odvodit z návratových příkazů.

U parametrů funkce v současné době neexistuje žádný odvození, ale existují způsoby, jak to obejít pomocí souborů JSDoc nebo TypeScript .d.ts (viz další části).

Kromě toho existuje zvláštní odvozování pro následující:

  • Třídy "ES3-style" zadané pomocí funkce konstruktoru a přiřazení k prototyp vlastnosti.
  • Vzory modulu ve stylu CommonJS, zadané jako přiřazení vlastností objektu exports nebo přiřazení k module.exports vlastnosti.
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 odvozování typu neposkytuje požadované informace o typu (nebo podporu dokumentace), informace o typu se můžou poskytnout explicitně prostřednictvím poznámek JSDoc. Pokud chcete například dát částečně deklarovanému objektu určitý typ, 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 se nikdy neodvozují. Pomocí značky JSDoc @param ale můžete také přidat typy k parametrům funkce.

/**
 * @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".
}

Informace JsDoc najdete v javascriptových souborech kontroly typů pro aktuálně podporované poznámky JsDoc.

IntelliSense založené na souborech deklarací TypeScriptu

Vzhledem k tomu, že JavaScript a TypeScript jsou založeny na stejné službě jazyka, dokážou 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 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í) souboru JavaScriptu ve stejném projektu (pomocí značky JsDoc ).

TypeScript definition file

Automatické získání definic typů

Ve světě TypeScriptu mají nejoblíbenější knihovny JavaScriptu svá rozhraní API popsaná v souborech .d.ts a nejběžnější úložiště pro tyto definice je na definitelyTyped.

Ve výchozím nastavení se služba jazyka pokusí zjistit, které knihovny JavaScriptu se používají, a pak automaticky stáhne a odkazuje na odpovídající soubor .d.ts , který popisuje knihovnu, aby poskytovala bohatší technologii IntelliSense. Soubory se stáhnou do mezipaměti umístěné ve složce uživatele v umístění %LOCALAPPDATA%\Microsoft\TypeScript.

Poznámka:

Tato funkce je ve výchozím nastavení zakázaná , pokud používáte konfigurační soubor tsconfig.json , 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 u volných souborů ve vašem projektu, které odpovídají seznamu zhruba 400 nejoblíbenějších javascriptových knihoven. Pokud například v projektu máte jquery-1.10.min.js , soubor jquery.d.ts se načte a načte, aby se zajistilo lepší prostředí pro úpravy. Tento soubor .d.ts nebude mít žádný vliv na váš projekt.