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
- IntelliSense založené na JSDoc
- IntelliSense založené na souborech deklarací TypeScriptu
- Automatické získání definic typů
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í kmodule.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
).
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.