Код Visual Studio - настройка параметра цитаты для импорта

85

При работе с TypeScript в Visual Studio Code предложение импорта для типа (запускаемое пробелом + точкой) будет генерировать импорт с использованием двойных кавычек.

Наш линтер TypeScript проверяет использование одинарных кавычек там, где это возможно.

Как видно ниже, предложение заключено в двойные кавычки ("@angular / ..."). Предложение импорта в двойных кавычках

Как я могу настроить параметры импорта?

Борис ван Катвейк
источник
marketplace.visualstudio.com/…
Иван Грозный

Ответы:

87

В версии VSCode 1.10 это (к сожалению) пока невозможно. Но это, как кажется, проблема для многих пользователей. Тема VSCode знает об этой проблеме, и вы можете следить за ней, чтобы узнать, когда она будет реализована: https://github.com/Microsoft/TypeScript/issues/13270


Обновление июнь 2018 г.

Начиная с VSCode 1.24 (июнь 2018 г.) для этого есть возможность!

"typescript.preferences.quoteStyle": "single"

Для получения дополнительной информации см .:

https://code.visualstudio.com/updates/v1_24#_preferences-for-auto-imports-and-generated-code

Себастьян Себальд
источник
22
"typescript.preferences.quoteStyle": "single"
Нико
7
Похоже, это не действует на меня. Я до сих пор получаю двойные кавычки из предложений и фрагментов.
John Knoop
То же самое для меня, изменено на всех возможных уровнях (пользователь, рабочая область, проект) и все еще имеют двойные кавычки :(
Костанос
Я не знаю, какой язык вы используете, но для javascript и машинописного текста есть отдельные настройки. Мне было интересно то же самое, но я установил настройку кода javascript, а не машинописный текст.
GhostBytes
53

Вы также можете настроить следующую строку в пользовательских настройках vscode, чтобы настроить этот параметр.

"prettier.singleQuote": true
abdllhbyrktr
источник
3
prettier - это расширение, не все его используют
caub
1
Разочаровано, что люди предполагают, что вы уже имеете или хотите использовать Prettier. Если кто-то не спросит: «Как мне с Prettier?» - я думаю, лучше не отвечать, если он у них есть.
Царь Бомба
@TsarBomba Ты прав. Этот параметр требует расширения Prettier для корректировки предложения. marketplace.visualstudio.com/…
abdllhbyrktr
15

Я исправил это, используя конфигурацию редактора , откройте ваш файл .editorconfig в корневом каталоге вашего проекта (если у вас его нет, создайте этот файл) и добавьте эту строку после [*]

[*]
...
quote_type = single

В вики вы можете увидеть полный список свойств.

Джоэл Жакес
источник
Проголосовали. Ограничивает изменения только тем проектом, над которым вы работаете, и глобально. Дополнительное примечание: перезапустите VS Code, чтобы изменения вступили в силу.
EdSF
Просто чтобы прокомментировать, в VS Code вы также можете установить настройки рабочего пространства, специфичные для этого проекта. Это позволит вам использовать одинарные / двойные кавычки специально при импорте, если вы хотите использовать другой тип в другом месте в файлах. Изменение .editorconfig будет применяться ко всему проекту.
Cruril
12

Начиная с VS Code 1.21.1 вам необходимо отредактировать

/usr/share/code/resources/app/extensions/typescript-basics/snippets/typescript.json

В Windows

/ Applications / Visual Studio Code.app/Contents/Resources/app/extensions/typescript-basics/snippets/typescript.json .

В Windows 10 (vscode версии 1.30. * (Пользовательская настройка) позже)

* C: \ Users \ <ваше имя пользователя> \ AppData \ Local \ Programs \ Microsoft VS Code \ resources \ app \ extensions \ typescript-basics \ snippets \ typescript.json

В разделе «Импорт внешнего модуля» этого файла сделайте свойство массива тела значением. "import { $0 } from '${1:module}';"После этого раздел будет выглядеть следующим образом:

"Import external module.": {
    "prefix": "import statement",
    "body": [
        "import { $0 } from '${1:module}';"
    ],
    "description": "Import external module."
},
cdoremus
источник
1
Это решение сработало для меня. Буквально все перепробовал, но только это исправило.
Соса
8

Альтернативой, которая поддерживает эту конфигурацию, является TypeScript Toolbox. .

Его можно настроить с помощью параметра genGetSet.pathStringDelimiter, который уже имеет импорт в одинарные кавычки по умолчанию.

Борис ван Катвейк
источник
2
Спасибо за это! Также стоит указать на genGetSet.spacedImportLineнастройку, чтобы новые строки импорта выглядели как import { Router }....вместо значений по умолчаниюimport {Router}...
FLGMwt
1
И ответ, и комментарий выше - отличная информация! Спасибо вам двоим!
Крис Бойд
7

Перейдите в «Файл»> «Настройки»> «Настройки», а затем добавьте в настройки пользователя:

"typescript.preferences.quoteStyle": "single",
"javascript.preferences.quoteStyle": "single"
Вагнер Данда да Силва Филью
источник
У меня работает, спасибо! Кстати, вы можете добавить ссылку на настройки по умолчанию, которые представляют эти параметры: code.visualstudio.com/docs/getstarted/settings . // Preferred quote style to use for quick fixes: 'single' quotes, 'double' quotes, or 'auto' infer quote type from existing imports. Requires using TypeScript 2.9 or newer in the workspace.
Mosh Feu
3

Начиная с TypeScript 2.5, первый оператор импорта или экспорта в файле будет сканироваться, чтобы определить, используются ли одинарные или двойные кавычки при использовании предложений импорта.

https://github.com/Microsoft/TypeScript/pull/17750

Тревор Дэниелс
источник
2

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

Перейдите в Предпочтения> Настройки пользователя.

"prettier.singleQuote": true

Это позволит использовать одинарную кавычку в строке. В противном случае, если вы вручную измените все двойные кавычки на одинарные, они вернутся обратно при сохранении. Также добавьте

"tslint.autoFixOnSave": true

для автоматического исправления при сохранении.

анирбан8611
источник
1

Это уже реализовано (как упоминалось в другом ответе)! Но вы, вероятно, еще не пользуетесь последней версией TypeScript.

Решение простое:

Щелкните номер версии TypeScript (например, 2.3.4) между «TypeScript» и маленьким смайликом в правом нижнем углу. Затем переключитесь на встроенную версию Visual Studio Code (на данный момент 2.5.3).

После этого код Visual Studio определит стиль цитаты для импорта, просмотрев первый оператор импорта . Обратите внимание, что небольшая всплывающая метка все равно будет показывать двойные кавычки.

Сообщение об ошибке

Соответствующий запрос на вытягивание :

Это добавляет возможность определять, использовать ли одинарные или двойные кавычки для нового импорта, добавленного с помощью исправлений кода. Когда добавляется новый импорт, мы сканируем самые верхние операторы исходного файла на предмет существующих объявлений импорта или экспорта с помощью спецификаторов модуля. Затем мы используем стиль цитаты первого найденного. Если в файле нет импорта, мы возвращаемся к использованию двойных кавычек.

Андрей Синицон
источник
0

Вышеупомянутые решения не помогли мне

Итак, вот моя работа, когда вы используете vscode,: "tslint.autoFixOnSave"true в вашем settings.jsonбудет автоматически исправлять эти расценки на импорт при сохранении файла.

Варун Сухеджа
источник
ГоворитUnknown Configuration Setting
Эдгар Кинтеро