Sdílet prostřednictvím


JavaScript IntelliSense

Visual Studio poskytuje výkonné nástroje pro úpravu JavaScriptu hned po instalaci. 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 obvykle určen typem hodnoty, která se používá pro její inicializaci, nebo typem poslední přiřazené 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é odvozování, ale existují způsoby, jak toto obejít pomocí JSDoc nebo souborů TypeScript .d.ts, viz další části.

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

  • Třídy ve stylu "ES3-style", specifikované pomocí funkce konstruktoru a přiřazení k vlastnosti prototype.
  • Vzory modulů ve stylu CommonJS, definované jako přiřazení vlastností u objektu exports nebo přiřazení vlastností module.exports.
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 značku @type, 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 do parametrů 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 naleznete v sekci Kontrola typů JavaScriptových souborů, kde jsou uvedeny 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 TypeScript) 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ším úložištěm těchto definic je 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 %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 popsáno 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, aby byla zajištěna lepší zkušenost s úpravou. Tento soubor .d.ts nebude mít na váš projekt žádný vliv.