Typescript: Не предлагайте рефакторинг `Convert to template string` для простых строк

Созданный на 13 февр. 2020  ·  4Комментарии  ·  Источник: microsoft/TypeScript


Версия TypeScript: 3.8.1-rc


Условия поиска:

  • рефакторинг
  • рефакторинг
  • кодовые действия

Репо
Для кода, такого как

import ImageEditor from 'tui-image-editor';

Поместите курсор на строку

Ошибка:
Предлагается рефакторинг convert to template string . Это бесполезно.

Я предлагаю отображать convert to template string случае, если вы используете выражение конкатенации строк.

Bug Refactorings Fixed

Самый полезный комментарий

Подобно противоположному мнению, я нахожу такое поведение полезным (в случаях, когда строки шаблонов допустимы). После многолетнего использования TS / JS моя мышечная память теперь по умолчанию имеет значение ${...} а не + для значений шаблона в строки, и приятно иметь возможность быстро преобразовать рассматриваемую строку в шаблон строка в тех случаях, когда ее еще нет.

Тем не менее, @DanielRosenwasser , другой потенциальный подход может заключаться в том, чтобы сделать предложение, если рассматриваемая строка содержит ${ . Просто мысль. : Little_smiling_face:

Все 4 Комментарий

Очевидно, что это глупо, потому что есть определенные позиции, в которых строка шаблона недействительна - я думаю, что, вероятно, было бы нормально отключить это для простых строк, но мы должны вернуться к тому, хотим ли мы включить его для всех строк и отключить для бессмысленных позиций вроде

  • спецификаторы импорта / экспорта
  • Имена собственности
  • Может, другие вещи?

Я бы предпочел видеть этот рефакторинг только тогда, когда курсор на выражении конкатенации строк

Кроме того, мы, вероятно, захотим исправить это для версии 3.8 (либо для окончательной версии, либо в сборке для восстановления), поскольку довольно неприятно, когда лампочка появляется для каждой строки

Подобно противоположному мнению, я нахожу такое поведение полезным (в случаях, когда строки шаблонов допустимы). После многолетнего использования TS / JS моя мышечная память теперь по умолчанию имеет значение ${...} а не + для значений шаблона в строки, и приятно иметь возможность быстро преобразовать рассматриваемую строку в шаблон строка в тех случаях, когда ее еще нет.

Тем не менее, @DanielRosenwasser , другой потенциальный подход может заключаться в том, чтобы сделать предложение, если рассматриваемая строка содержит ${ . Просто мысль. : Little_smiling_face:

Привет

Быстрое предупреждение в поддержку точки зрения

Что касается контекста, я являюсь автором расширения VS Code, которое обеспечивает рефакторинг JS и TS. Раньше мы предоставляли «Преобразовать в шаблонный литерал». Мы удалили его, так как теперь он обрабатывается редактором через TypeScript.

Однако было очень правильно (и удобно) переключиться с:

const a = "I have some apples";

к

const a = `I have some apples`;

Чтобы начать вставлять переменные внутрь.

Я так понимаю, это было удалено как побочный эффект исправления ошибки. Я думаю, что мы действительно хотим избежать предложения рефакторинга для недопустимых вещей, таких как импорт. Я действительно реализовал такую ​​проверку в своем расширении.

Вы можете проверить https://github.com/nicoespeon/abracadabra/issues/94, чтобы узнать больше об этом.

Если вам нужны подробности, буду рад помочь 😄
Спасибо!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги