Подтвердить что ты не робот

Visual Studio 2015 RC Typescript ошибка экспериментальных декораторов

Как отключить следующую ошибку в VS2015?

TS1219 Экспериментальная поддержка декораторов - это функция, которая может быть изменена в будущей версии. Укажите "--experimentalDecorators", чтобы удалить это предупреждение.

enter image description here

Я пытаюсь использовать аннотации Angular2. Я попробовал добавить в файл проекта следующие файлы вручную:

<TypeScriptExperimentalDecorators>True</TypeScriptExperimentalDecorators>

Я также устанавливаю бета-расширение TypeScript 1.5.0.

4b9b3361

Ответ 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 для сопоставления --emitDecroatorMetadata​​p >

Ответ 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>

Ответ 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".