Как вытащить набор текста в 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 типы?".

Ниже приведено текущее решение:

  1. Добавьте https://github.com/kitsonk/deno_ls_plugin в свою рабочую область. Отредактируйте свой tsconfig.json и заменить пути к http а также https импорт с локальным кэшем расположения удаленных зависимостей (обычно под $HOME/.deno/deps/http а также $HOME/.deno/deps/https)
  2. Создать typings/ папка. Бежать deno --types > typings/deno.d.ts, Deno выведет файл определения типа для основного API.
  3. Теперь проблема заключается в том, что 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"]
Другие вопросы по тегам