JavaScript IntelliSense
Program Visual Studio zapewnia zaawansowane środowisko edytowania języka JavaScript bezpośrednio poza urządzeniem. Obsługiwane przez usługę językową opartą na języku TypeScript, program Visual Studio zapewnia zaawansowaną funkcję IntelliSense, obsługę nowoczesnych funkcji Języka JavaScript i funkcje zwiększające produktywność, takie jak Przechodzenie do definicji, refaktoryzacja i inne.
Aby uzyskać więcej informacji na temat ogólnych funkcji IntelliSense programu Visual Studio, zobacz Using IntelliSense (Korzystanie z funkcji IntelliSense).
Funkcja IntelliSense w języku JavaScript wyświetla informacje dotyczące list parametrów i elementów członkowskich. Te informacje są udostępniane przez usługę języka TypeScript, która używa analizy statycznej w tle, aby lepiej zrozumieć kod.
Język TypeScript używa kilku źródeł do utworzenia tych informacji:
- Funkcja IntelliSense oparta na wnioskowaniu typu
- Funkcja IntelliSense oparta na jsdoc
- Funkcja IntelliSense oparta na plikach deklaracji TypeScript
- Automatyczne pozyskiwanie definicji typów
Funkcja IntelliSense oparta na wnioskowaniu typu
W języku JavaScript w większości przypadków nie ma jawnych informacji o typie. Na szczęście zwykle łatwo jest ustalić typ, biorąc pod uwagę otaczający kontekst kodu. Ten proces jest nazywany wnioskowaniem typu.
W przypadku zmiennej lub właściwości typ jest zazwyczaj typem wartości użytej do zainicjowania lub ostatniego przypisania wartości.
var nextItem = 10;
nextItem; // here we know nextItem is a number
nextItem = "box";
nextItem; // now we know nextItem is a string
W przypadku funkcji zwracany typ można wywnioskować z instrukcji return.
W przypadku parametrów funkcji obecnie nie ma wnioskowania, ale istnieją sposoby obejścia tego problemu przy użyciu plików JSDoc lub TypeScript .d.ts (zobacz sekcje późniejsze).
Ponadto istnieje specjalne wnioskowanie dla następujących elementów:
- Klasy typu "ES3" określone przy użyciu funkcji konstruktora i przypisań do właściwości prototypu.
- Wzorce modułów w stylu CommonJS, określone jako przypisania właściwości w
exports
obiekcie lub przypisania domodule.exports
właściwości.
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.
Funkcja IntelliSense oparta na jsdoc
Jeśli wnioskowanie typu nie udostępnia żądanych informacji o typie (lub w celu obsługi dokumentacji), informacje o typie mogą być udostępniane jawnie za pośrednictwem adnotacji JSDoc. Na przykład, aby nadać częściowo zadeklarowany obiekt określony typ, można użyć tagu @type
, jak pokazano poniżej:
/**
* @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 wspomniano, parametry funkcji nigdy nie są wnioskowane. Jednak przy użyciu tagu JSDoc @param
można również dodawać typy do parametrów funkcji.
/**
* @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".
}
Zobacz informacje jsdoc w artykule Sprawdzanie typów plików JavaScript dla adnotacji JsDoc, które są obecnie obsługiwane.
Funkcja IntelliSense oparta na plikach deklaracji TypeScript
Ponieważ języki JavaScript i TypeScript są oparte na tej samej usłudze językowej, są w stanie wchodzić w interakcje w bogaty sposób. Na przykład funkcję IntelliSense języka JavaScript można podać dla wartości zadeklarowanych w pliku .d.ts (zobacz dokumentację języka TypeScript), a typy, takie jak interfejsy i klasy zadeklarowane w języku TypeScript, są dostępne do użycia jako typy w komentarzach JsDoc.
Poniżej przedstawiono prosty przykład pliku definicji języka TypeScript dostarczającego takie informacje o typie (za pośrednictwem interfejsu) do pliku JavaScript w tym samym projekcie (przy użyciu tagu JsDoc
).
Automatyczne pozyskiwanie definicji typów
W świecie języka TypeScript najbardziej popularne biblioteki Języka JavaScript mają swoje interfejsy API opisane przez pliki d.ts , a najbardziej typowe repozytorium dla takich definicji znajduje się na ZdecydowanieTyped.
Domyślnie usługa językowa próbuje wykryć, które biblioteki Języka JavaScript są używane, a następnie automatycznie pobrać i odwołać się do odpowiedniego pliku d.ts opisującego bibliotekę w celu zapewnienia bogatszej funkcji IntelliSense. Pliki są pobierane do pamięci podręcznej znajdującej się w folderze użytkownika w folderze %LOCALAPPDATA%\Microsoft\TypeScript.
Uwaga
Ta funkcja jest domyślnie wyłączona , jeśli używasz pliku konfiguracji tsconfig.json , ale może być ustawiona na włączoną, jak opisano poniżej.
Obecnie funkcja automatycznego wykrywania działa w przypadku zależności pobranych z narzędzia npm (odczytując plik package.json), Bower (odczytując plik bower.json) i w przypadku luźnych plików w projekcie, które pasują do listy około 400 najpopularniejszych bibliotek Języka JavaScript. Jeśli na przykład w projekcie masz plik jquery-1.10.min.js , plik jquery.d.ts zostanie pobrany i załadowany w celu zapewnienia lepszego środowiska edycji. Ten plik .d.ts nie będzie miał wpływu na projekt.
Powiązana zawartość
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla