Как вытащить набор текста в Deno
Я проверяю Дено и нашел один из начальных примеров очень элегантным:
import { serve } from "https://deno.land/x/std@v0.2.10/http/server.ts";
const s = serve("0.0.0.0:8000");
void async function main() {
for await (const req of s) {
req.respond({ body: new TextEncoder().encode("Hello World\n") });
}
}()
Я использую VS Code для создания сценариев Deno, но я не уверен, как заставить редактор знать о типах для импортированных функций, таких как serve
, Я думаю, что может быть слишком рано для поддержки IDE с Deno, но в случае, если есть решение или обходной путь, я хотел бы знать об этом.
Нужно ли устанавливать @types
пакет или что-то в этом роде? import
или же reference
немного .d.ts
файлы объявлений? Как сделать, чтобы VS Code предлагал варианты завершения кода и отображал аннотации типов при использовании serve
функция в этом примере и какие-либо импортированные скрипты в Deno вообще?
4 ответа
Начнем с этой статьи:
https://medium.com/@kitsonk/develop-with-deno-and-visual-studio-code-225ce7c5b1ba
Это было написано одним из основных членов Deno.
tldr:
Установить denoland.vscode-deno
расширение (это устарело). Затем включите Deno в конкретном проекте в<proj-root>/.vscode/settings.json
:
{ "deno.enable": true }
Взгляните на документацию, если используется версия рабочего пространства TS вместо встроенной версии VS Code.
Подробнее
Что делает расширение?
- разрешает явные
.ts
расширения в VS Code - разрешает спецификаторы импорта URL, такие как
"https://deno.land/std@0.56.0/http/server.ts"
- интегрирует типы времени выполнения Deno (например,
Deno.writeFile
)
Как разрешить типы для .ts
модули
С указанным выше расширением VS Code разрешает .ts
расширения файлов для импорта и разрешения импорта URL-адресов в кэш локального диска. Компилятор может использовать эти кэшированные определения типов для проверки. Наконец, извлеките все источники и перезапустите сервер TS / перезагрузите VS Code:
deno cache https://deno.land/std/http/server.ts # fetch and compile from URL
# or main project file
deno cache <your main file>.ts # fetches all its dependencies
server.ts
является частью стандартной библиотеки, которая представляет собой набор удаленных.ts
модулей, поэтому он также будет набран правильно.
Как разрешить типы для .js
модули
Deno предоставляет дополнительные способы ссылки.d.ts
файлы для .js
файлы.
// @deno-types="./foo.d.ts"
import * as foo from "./foo.js";
Укажите определение типа в расположении кода хоста:/// <reference types="./foo.d.ts" />
export const foo = "foo";
Альтернатива: Deno может читать пользовательские X-TypeScript-Types
Заголовок HTTP из удаленного импорта.
Как использовать кастом tsconfig.json
Данный проект tsconfig.json
config объединяется с конфигурацией по умолчанию Deno, например:{
"compilerOptions": {
// set a custom, deviant value
"noImplicitAny": false // deno default is true
// (this is just an example - use strong types, whenever possible)
}
}
Включают -c
вариант, поэтому VS Code и Deno CLI имеют одинаковые настройки компилятора:deno run -c ./tsconfig.json main.ts
Как использовать --unstable
типы?
cd <your-project>
deno types --unstable > deno.runtime.d.ts # (1)
touch tsconfig.json # (2a), TS project
# or
touch jsconfig.json # (2b), JS project
VS Code может автоматически включать deno.runtime.d.ts
с существующей конфигурацией, как указано выше(2)
.
Критические изменения
vscode-deno
Версия 1.26.0
Расширение должно быть явно включен по"deno.enable": true
в .vscode/settings.json
проекта (по умолчанию false
). Раньше значение по умолчанию былоtrue
.
vscode-deno
<1,25,0
Устанавливайте типы Deno в каждом случае (стабильном и нестабильном) - см. "Как использовать --unstable
типы?".
Ниже приведено текущее решение:
- Добавьте https://github.com/kitsonk/deno_ls_plugin в свою рабочую область. Отредактируйте свой
tsconfig.json
и заменить пути кhttp
а такжеhttps
импорт с локальным кэшем расположения удаленных зависимостей (обычно под$HOME/.deno/deps/http
а также$HOME/.deno/deps/https
) - Создать
typings/
папка. Бежатьdeno --types > typings/deno.d.ts
, Deno выведет файл определения типа для основного API. - Теперь проблема заключается в том, что VS Code не имеет представления о получении удаленных зависимостей при импорте. Для решения этой проблемы, как только вы добавили новый пульт
import
, бежатьdeno --prefetch your_file.ts
снести все зависимости. Чтобы упростить ситуацию, я бы посоветовал хранить все ваши удаленные зависимости в одном файле.deps.ts
(и запустить--prefetch
на этот файл) и реэкспортируйте материал, чтобы другие файлы в вашем проекте могли использовать deps.
Загрузите lib.deno.d.ts с этого URL.https://github.com/denoland/deno/releases/download/v1.34.1/lib.deno.d.ts
Затем в jsconfig.json добавьте местоположение загруженного файла d.ts вtypes
множество
"types": ["./lib.deno.d.ts"]