Visual Studio 2015 RC Typescript ошибка экспериментальных декораторов
Как отключить следующую ошибку в VS2015?
TS1219 Экспериментальная поддержка декораторов - это функция, которая может быть изменена в будущей версии. Укажите "--experimentalDecorators", чтобы удалить это предупреждение.
![enter image description here]()
Я пытаюсь использовать аннотации Angular2. Я попробовал добавить в файл проекта следующие файлы вручную:
<TypeScriptExperimentalDecorators>True</TypeScriptExperimentalDecorators>
Я также устанавливаю бета-расширение TypeScript 1.5.0.
Ответы
Ответ 1
Visual Studio 2015 поддерживает файлы tsconfig, начиная с версии Typescript версии 1.8. Создайте файл tsconfig.json в корне вашего проекта и добавьте параметр experimentalDecorators
для компилятора.
Пример:
{
"compileOnSave": true,
"compilerOptions": {
"module": "commonjs",
"sourceMap": true,
"experimentalDecorators": true
}
}
Для более старых версий:
https://github.com/Microsoft/TypeScript/issues/3934
Если у вас есть файл проекта, tsconfig не будет выполняться. файл проекта имеет приоритет. Мы по-прежнему сбрасываем историю интеграции между VS-проектом и tsconfig, поскольку вы можете указать параметры компилятора в обоих.
чтобы отключить сообщение об ошибке, щелкните правой кнопкой мыши файл проекта, выгрузите проект, затем щелкните правой кнопкой мыши по редактированию файла проекта. В конце файла должен быть раздел конфигурации, добавьте:
<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
....
<TypeScriptExperimentalDecorators>true</TypeScriptExperimentalDecorators>
</PropertyGroup>
сохранить и перезагрузить.
Вам также может понадобиться TypeScriptEmitDecoratorMetadata для сопоставления --emitDecroatorMetadatap >
Ответ 2
Обновите свою IDE до последней версии. Затем создайте файл tsconfig.json в корне вашего проекта, если у вас его еще нет. Затем добавьте experimentalDecorators
в качестве параметра компилятора.
Пример:
{
"version": "1.5.0",
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"declaration": false,
"noImplicitAny": false,
"removeComments": true,
"noLib": false,
"emitDecoratorMetadata": true,
"sourceMap": true,
"listFiles": true,
"outDir": "dist",
"experimentalDecorators": true
}
}
Ответ 3
В Visual Studio 2015 вы должны включить TypeScriptExperimentalDecorators
в файл проекта TypeScript.
Разгрузите файл проекта, а затем добавьте следующую строку:
<TypeScriptExperimentalDecorators>True</TypeScriptExperimentalDecorators>
Я скопировал в полную PropertyGroup, чтобы вы могли найти, где его добавить:
<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
<TypeScriptRemoveComments>false</TypeScriptRemoveComments>
<TypeScriptSourceMap>true</TypeScriptSourceMap>
<TypeScriptTarget>ES5</TypeScriptTarget>
<TypeScriptJSXEmit>None</TypeScriptJSXEmit>
<TypeScriptCompileOnSaveEnabled>True</TypeScriptCompileOnSaveEnabled>
<TypeScriptNoImplicitAny>False</TypeScriptNoImplicitAny>
<TypeScriptModuleKind>System</TypeScriptModuleKind>
<TypeScriptOutFile />
<TypeScriptOutDir />
<TypeScriptGeneratesDeclarations>False</TypeScriptGeneratesDeclarations>
<TypeScriptNoEmitOnError>True</TypeScriptNoEmitOnError>
<TypeScriptMapRoot />
<TypeScriptSourceRoot />
<TypeScriptExperimentalDecorators>True</TypeScriptExperimentalDecorators>
</PropertyGroup>
Ответ 4
Найдено, что мне также нужно добавить тег для метаданных
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
<!--other -->
<TypeScriptExperimentalDecorators>True</TypeScriptExperimentalDecorators>
<TypeScriptEmitDecoratorMetadata>True</TypeScriptEmitDecoratorMetadata>
</PropertyGroup>
Ответ 5
http://www.cmichaelgraham.io/aurelia-typescript-samples/vs2015-samples/vs2015-samples.html
<TypeScriptToolsVersion>1.7</TypeScriptToolsVersion>
...........
<TypeScriptAdditionalFlags> $(TypeScriptAdditionalFlags) --emitDecoratorMetadata --experimentalDecorators </TypeScriptAdditionalFlags>
Ответ 6
Я тоже столкнулся с этой проблемой.
Обнаружено:
- Начиная с Angular2 - 2.0.0-beta.17
Моя среда:
- Обновление Visual Studio 2015 3
- Typescript для Microsoft Visual Studio Extension 1.8.34.0
- Node версия v6.2.2 (cmdline " > Node --version", чтобы найти вашу)
- Основной проект ASP.NET
Мое решение было:
- Выгрузить проект
- Добавьте следующую конфигурацию в файл конфигурации проекта
<TypeScriptExperimentalDecorators>True</TypeScriptExperimentalDecorators>
Если вы не можете найти правильную группу свойств в файле csproj или вы хотите, чтобы среда VS автоматически добавила правильную группу свойств, а затем просто переключилась на "Produce выходы по сборке" в свойствах проектa > Постройте, затем выполните проект выгрузить.
- Сохраните файл и перезагрузите проект.
- Закройте Visual Studio, затем запустите и заново откройте решение и проект.
Чтобы отметить здесь, у меня нет на данный момент файла tsconfig.json. Добавление файл tsconfig.json заставляет проблему вернуться.
Чтобы решить проблему после добавления файла tsconfig.json, я выполнил инструкции по настройке typescript с .NET Core расположенным здесь в разделе "Установить типизацию для зависимостей" и "Обновить tsconfig.json".
Подводя итог (но, пожалуйста, прочитайте для себя):
- Откройте cmd и перейдите в папку src вашего проекта.
- Запустите "npm install -g typings" (мне это не нравится. Другие варианты приветствуются)
- Добавить
"experimentalDecorators": true
в compilerOptions в tsconfig.json
- Проверьте свое решение еще раз. Проблема, описанная выше, теперь должна исчезнуть.
Для контекста. В дополнение к этой ошибке я также испытывал следующее:
Вышеупомянутые шаги устраняют определенную ошибку выше для меня. Надеюсь, это поможет.
Ответ 7
У меня была аналогичная проблема. У меня есть кое-что, чтобы поделиться с моими выводами. Я тоже работаю над Angular 2 (ng-book-2).
Что я использую?
IDE: WebStorm
Typescript: 1.6.2
Когда: 10 октября 2015 г.
Что я делаю?
Я попытался скомпилировать приложение app.ts в app.js; однако я столкнулся с этой ошибкой:
ошибка TS5052: опция 'emitDecoratorMetadata' не может быть указана без указания опции 'experimentalDecorators'.
Это был мой tsconfig.json ПЕРЕД
{
"version": "1.5.0",
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"declaration": false,
"noImplicitAny": false,
"removeComments": true,
"noLib": false,
"emitDecoratorMetadata": true
},
"filesGlob": [
"./**/*.ts",
"!./node_modules/**/*.ts"
],
"files": [
"./app.ts",
"./typings/angular2/angular2.d.ts",
"./typings/es6-promise/es6-promise.d.ts",
"./typings/rx/rx-lite.d.ts",
"./typings/rx/rx.d.ts",
"./typings/tsd.d.ts"
]
}
Это мой tsconfig.json ПОСЛЕ
{
"version": "1.6.2",
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"declaration": false,
"noImplicitAny": false,
"removeComments": true,
"noLib": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true
},
"filesGlob": [
"./**/*.ts",
"!./node_modules/**/*.ts"
],
"files": [
"./app.ts",
"./typings/angular2/angular2.d.ts"
]
}
Изменение tsconfig.json от до и после эффективно решает две мои проблемы. Один из них - выше, а другой - проблема ниже. Последняя проблема обсуждается здесь angular2 с ES6 не следует ссылаться на es6-обещание
typings/es6-prom/es6-prom.d.ts(11,15): ошибка TS2300: Дублирующий идентификатор "Promise". typings/es6-prom/es6-prom.d.ts(42,16): ошибка TS2300: Дублирующий идентификатор "Promise". typings/es6-shim/es6-shim.d.ts(475,11): ошибка TS2300: Дублирующий идентификатор "Promise". typings/es6-shim/es6-shim.d.ts(552,13): ошибка TS2300: повторяющийся идентификатор "Promise".
Ответ 8
Я решил это, изменив TypeScriptToolsVersion в моем файле csproj в соответствии с версией TypeScript, определенной в packages.json (в настоящее время 2.0.2).
<TypeScriptToolsVersion>2.0.2</TypeScriptToolsVersion>
Ответ 9
Эта ошибка возникла для меня, потому что я попытался ошибочно создать новый файл с расширением ".js" вместо ".ts". Он исчез после изменения расширения файла на ".ts".