Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A Visual Studio hatékony JavaScript-szerkesztési élményt nyújt közvetlenül a dobozból. A TypeScript-alapú nyelvi szolgáltatással rendelkező Visual Studio gazdag IntelliSense-t biztosít, támogatja a modern JavaScript-funkciókat, valamint olyan hatékonyságnövelő funkciókat, mint a Go to Definition, az újrabontás stb.
További információ a Visual Studio Általános IntelliSense funkciójáról: Az IntelliSensehasználata.
A JavaScript IntelliSense paraméter- és taglistákra vonatkozó információkat jelenít meg. Ezeket az információkat a TypeScript nyelvi szolgáltatás biztosítja, amely statikus elemzést használ a színfalak mögött a kód jobb megértéséhez.
A TypeScript több forrásból is összeállítja ezeket az információkat:
- IntelliSense típuskövetkeztetésen alapuló
- IntelliSense a JSDoc alapján
- IntelliSense TypeScript deklarációs fájlokon alapul
- Típusdefiníciók automatikus beszerzése
IntelliSense típuskövetkeztetés alapján
JavaScriptben a legtöbb esetben nincs elérhető explicit típusinformáció. Szerencsére általában könnyű kitalálni egy típust a környező kódkörnyezet alapján. Ezt a folyamatot típus-következtetésnek nevezzük.
Változók vagy tulajdonságok esetében a típus általában az inicializálásához használt érték vagy a legutóbbi érték-hozzárendelés típusa.
var nextItem = 10;
nextItem; // here we know nextItem is a number
nextItem = "box";
nextItem; // now we know nextItem is a string
Függvény esetén a visszatérési típus a visszatérési utasításokból következtethető ki.
A függvényparaméterek esetében jelenleg nincs következtetés, de JSDoc- vagy TypeScript -.d.ts fájlokkal is megkerülhetők (lásd a későbbi szakaszokat).
Emellett a következőkre is speciális következtetést lehet következtetni:
- "ES3-stílusú" osztályok, amelyek konstruktorfüggvény és a prototípustulajdonsághoz való hozzárendelések használatával adhatók meg.
- CommonJS-stílusú modulminták, a
exportsobjektum tulajdonság-hozzárendeléseként vagy amodule.exportstulajdonság hozzárendeléseként megadva.
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.
JSDoc-alapú IntelliSense
Ha a típuskövetkeztetés nem adja meg a kívánt típusinformációkat (vagy a dokumentáció támogatása érdekében), a típusadatokat JSDoc annotációkon keresztül explicit módon is meg lehet adni. Ha például egy részben deklarált objektumnak egy adott típust szeretne adni, a címkét az @type itt látható módon használhatja:
/**
* @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
Jegyzet
A JavaScripttől eltérően a TypeScript nem támogatja a JSDoc-megjegyzésekben szereplő típusinformációkat. TypeScript esetén használja x: type a szintaxist a változó deklarációjában, például let x: { a: number, b: number}. További információ: JavaScript-fájlok típusellenőrzése.
Ahogy említettük, a függvényparamétereket soha nem következtetik ki. A JSDoc @param címke használatával azonban típusokat is hozzáadhat a függvényparaméterekhez.
/**
* @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".
}
Az aktuálisan támogatott JSDoc-annotációkkal kapcsolatos információt a JavaScript-fájlok típusellenőrzése részben, a és szakaszban találja.
IntelliSense TypeScript-deklarációs fájlok alapján
Mivel a JavaScript és a TypeScript ugyanazon a nyelvi szolgáltatáson alapul, sokoldalúan tudnak kommunikálni. A JavaScript IntelliSense például megadható egy .d.ts fájlban deklarált értékekhez (lásd TypeScript-dokumentáció), és a TypeScriptben deklarált felületek és osztályok típusokként használhatók a JSDoc-megjegyzésekben.
Az alábbiakban egy egyszerű példát mutatunk be egy TypeScript-definíciós fájlra, amely ilyen típusú információkat nyújt (interfészen keresztül) egy JavaScript-fájlhoz ugyanabban a projektben (JSDoc címkével).
Típusdefiníciók automatikus beszerzése
A TypeScript világban a legnépszerűbb JavaScript-kódtárak api-jait .d.ts fájlok ismertetik, és az ilyen definíciók leggyakoribb adattára a DefinitelyTyped.
Alapértelmezés szerint a nyelvi szolgáltatás megpróbálja észlelni, hogy mely JavaScript-kódtárak vannak használatban, majd automatikusan letölti és hivatkozik a kódtárat leíró megfelelő .d.ts fájlra a gazdagabb IntelliSense biztosítása érdekében. A fájlok a \Microsoft\TypeScript %LOCALAPPDATA%felhasználói mappájában található gyorsítótárba lesznek letöltve.
Jegyzet
Ez a funkció alapértelmezés szerint le van tiltva , ha tsconfig.json konfigurációs fájlt használ, de a jelen szakaszban ismertetett módon engedélyezve lehet.
Az automatikus észlelés jelenleg az npm-ből letöltött függőségek esetében működik (a package.json fájl olvasásával), a Bowerrel (a bower.json fájl olvasásával), valamint a projekt laza fájljaival, amelyek nagyjából a 400 legnépszerűbb JavaScript-kódtár listájának felel meg. Ha például jquery-1.10.min.js található a projektben, a jquery.d.ts fájlt fogják beolvasni és betölteni, hogy jobb szerkesztési élményt nyújtson. Ez a .d.ts fájl nem lesz hatással a projektre.
Az IntelliSense konfigurálása
Az IntelliSense utasítás kiegészítésének viselkedését az Eszközök > beállításai > szövegszerkesztő > JavaScript/TypeScript > IntelliSense > Általános elem kiválasztásával módosíthatja.
Ha a Csak a Tab vagy az Enter billentyűkombinációt választja a véglegesítéshez, a JavaScript-kódszerkesztő csak a Tab vagy Az Enter billentyű kiválasztása után fűzi hozzá a kiegészítési listában kijelölt elemeket tartalmazó utasításokat. Ha törli a jelölőnégyzet jelölését, más karakterek – például pont, vessző, kettőspont, nyitott zárójel és nyitott zárójel ({) – is hozzáfűzhetnek utasításokat a kijelölt elemekhez.