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í JSDoc nebo TypeScript .d.ts souborů (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 ).

Definiční soubor TypeScriptu

Automatické získání definic typů

Ve světě TypeScriptu mají nejoblíbenější knihovny JavaScriptu svá rozhraní API popsaná .d.ts soubory 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ý knihovnu popisuje, 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á tak, aby byla povolená, 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 máte například v projektu 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.