Как динамически генерировать строки документов в машинописном тексте?

#typescript #autocomplete #docstring #language-server-protocol

Вопрос:

Есть ли способ динамически генерировать аннотации/строки документов из значений объектов в TypeScript?

У меня есть translations.json файл, который выглядит примерно так:

 {
  "hello": { "en": "hello", "de": "hallo" },
  "bye": { "en": "bye", "de": "tschüss" }
}
 

И translate.ts это выглядит так:

 import type translations from './translations.json';

type TranslationKey = keyof typeof translations;

function translate(key: TranslationKey){
  // some translation code
}
 

С помощью этого я получаю все ключи JSON-объекта в качестве предложений по завершению, когда я использую функцию translate() frunction.

Теперь мой вопрос: возможно ли динамически генерировать какую-либо строку документа из значений свойств json? Так что во всплывающем окне «Предложение» моего редактора значения отображаются в качестве дополнительной информации.

Желаемый результат в редакторе:

 translate('<cursor>
          ╭───────╮╭───────────────╮
          │bye   >├┤bye            │
          │hello  ││───────────────│
          ╰───────╯│TranslationKey │
                   │en: bye        │
                   │de: tschüss    │
                   ╰───────────────╯
 

Ответ №1:

Эти записи завершения JSON создаются поставщиком завершения JSON vscode, который не может быть настроен для создания этих элементов определенным образом. Единственный способ изменить результат завершения-это написать собственный поставщик завершения (что, вероятно, слишком много работы для такого простого результата).