У меня есть этот машинописный код:
function fooAlert(text: string): void {
alert(text);
}
namespace BarNamespace {
export function barAlert(text: string): void {
alert(text);
}
export class BarEmpty {
}
}
Машинописный код транслируется в javascript с использованием задач gulp:
function fooAlert(text) {
alert(text);
}
var BarNamespace;
(function(BarNamespace) {
function barAlert(text) {
alert(text);
}
BarNamespace.barAlert = barAlert;
var BarEmpty = function() {
function BarEmpty() {}
return BarEmpty;
}();
BarNamespace.BarEmpty = BarEmpty;
})(BarNamespace || (BarNamespace = {}));
Проблема в том, что IntelliSense в Visual Studio 2019 не работает в разметке Razor, как я ожидал. Например, у меня есть это asp. net MVC Просмотр Core 3.1 (.cs html):
<!DOCTYPE html>
<html lang="en">
<head>
<script src="~/Site.js" asp-append-version="true"></script>
</head>
<body>
<script>
fooAlert("foo"); // IntelliSense match after typing f
BarNamespace.barAlert("bar"); // IntelliSense match after typing B for BarNamespace but not for .barAlert
</script>
</body>
</html>
Когда я набираю f
, то fooAlert(text: any): void
отображается дважды (с any
вместо string
). Я думаю, один раз для файла javascript в моем решении и один раз для файла машинописного текста. Когда я набираю B
, отображается BarNamespace
. После того, как я наберу BarNamespace
и .
, ничего не будет в списке. У меня также есть файл .js.map
, но я не вижу никаких изменений, когда добавляю его рядом с файлом js.
Я делаю что-то не так или есть способ улучшить предложения IntelliSense в Visual Studio 2019? Сценарий работает в браузере, но было бы намного проще и безопаснее иметь полезные предложения IntelliSense, по крайней мере, для доступных методов.