Я только что загрузил новый код Visual Studio, и мое первое впечатление очень позитивно. Для typescript, intellisense прекрасно работает.
Однако есть странная проблема: VS Code, похоже, не может скомпилировать модули typescript.
Этот код:
/// <reference path="../definitions/react.d.ts"/>
import React = require("react");
отлично компилируется на cmd,
tsc --module commonjs main.ts
но в VS Code вторая строка выделена красным цветом, и редактор жалуется:
не может компилировать внешние модули, если не указан флаг "-module"
Конечно, любой код typescript, который использует модули, должен быть скомпилирован с этим флагом. Но если IDE знает об использовании модулей, почему он не устанавливает флаг? typescript код без модулей компилируется при сохранении без проблем.
Я думаю, что мне не хватает конфигурационного файла конфигурации компилятора. Что-то подобное существует? Где я могу его найти?
UPDATE
Я добавил файл tsconfig.json:
{
"compilerOptions": {
"target": "ES5",
"module": "commonjs",
"sourceMap": true
}
}
Это действительно устраняет ошибку. К сожалению, IDE больше не компилирует мой код. Сначала я подумал, что config.json будет только отключать сообщение об ошибке, но он делает больше, чем это. Intellisense теперь работает в файле образца. Если я набираю React
, автозаполнение запускается и, по-видимому, знает React, потому что отображаются значимые предложения.
Теперь, почему VS Code не компилирует файл в js? Я попытался настроить бегун задачи для выполнения этой задачи, но он не работает:
{
"version": "0.1.0",
// The command is tsc.
"command": "tsc",
// Show the output window only if unrecognized errors occur.
"showOutput": "silent",
// Under windows use tsc.exe. This ensures we don't need a shell.
"windows": {
"command": "tsc.exe"
},
// args is the HelloWorld program to compile.
"args": ["--module commonjs","${file}"],
// use the standard tsc problem matcher to find compile problems
// in the output.
"problemMatcher": "$tsc"
}
Если я сохраню файл, ничего не происходит, даже если я явно запускаю задачу сборки, нет ответа. Имя задачи, которую я редактировал, - tsc, я тоже пытался ее запустить. Нет эффекта. Затем я изменил аргументы на "args": ["--module commonjs","main.ts"]
, Нет ответа.
UPDATE
Единственный способ, с которым работает рабочий стол, состоит в следующем:
"args": ["${file}"], "isShellCommand": true,
Вот выходы:
-
"args": ["-p"],
-
"args": ["-p", "."],
ошибка TS5023: неизвестная опция компилятора 'p'.
-
"args": ["."],
ошибка TS6053: Файл '.ts' не найден.