2014-11-14 6 views
6

Недавно была установлена ​​новая версия TS в VS2013 и попытался использовать модификатор protected. Однако TS валидатор показывает мне ошибку (и подчеркивает protected слова с красной линией. я получаю сообщение об ошибке, какОшибка при шифровании с использованием TypeScript 1.3

Use of future reserver word. ; expected

выглядит как это выглядит в определения старые TS. Проверил файл проект и есть 1,1 версия машинопись. также работает tsc -v производит 1.3.0.

кто-то из вас, ребята испытывают ли это? что я не хватает и что нужно сделать, чтобы исправить это.

Благодарим за помощь. enter image description here

export class SomeClass { 
    protected metadata: Metadata; 
    protected subItems: SomeClass[]; 
    constructor() { 
    } 
} 
+0

Можете ли вы опубликовать пример своего кода, поскольку изображение немного перечеркнуто для меня, чтобы честно воссоздать то, что у вас может быть? – Fenton

+0

@Steve Fenton добавлен код. проблема заключается в том, что синтаксический анализатор не распознает «защищенный» идентификатор, а также все новые функции в TS 1.3 – Romko

+0

Этот фрагмент кода будет делать - теперь я могу видеть контекст, который вы добавили 'protected' to. (т. е. я ожидал бы ошибки, если бы у вас не было этого в классе, который ваш образ не показывает). – Fenton

ответ

7

Благодарю всех вас. для ваших ответов! Причина была (о, какой позор =)) ReSharper. Это проверка показала, что ошибка, приостановив ее, теперь я не получаю ошибок. Похоже, ребята из JetBrains должны обновить свои определения, как это сделала веб-Essentials. Поскольку они несовместимы с новой версией TS, 1.3. И никаких обновлений не ожидается.

Надеюсь, это будет полезно для кого-то еще.

1

Это не сработало для меня. Что я сделал, чтобы исправить это, было установить VS2013 Update 4, и после этого я снова выполнил настройку TypeScript 1.3 и выполнил ремонт.

Кроме того, вы должны убедиться, что у вас не есть <TypeScriptToolsVersion>1.0</TypeScriptToolsVersion> в вашем заданном csproject. Установите его на 1.1 (не 1.3) или полностью удалите его (тогда он будет использовать последний). Надеюсь, это поможет!

+0

Dick van den Brink, спасибо, за ваш ответ.но переустановка мне не помогла, версия правильная, хотя – Romko

+0

Вы говорите, что версия верна, мы говорим о tsc.exe и VS2013 Update 4? Кроме того, я заметил, что у меня была ошибка в уценке с помощью значков <>, в результате чего содержимое шрифтов TypeScriptToolsVersion не было видимым. Вы проверили это? –

1

Вы можете определить, связана ли проблема с Visual Studio, указав неправильную версию TypeScript, выполнив следующие шаги.

Поместите этот пример кода в C:\Temp\app.ts

interface Metadata { 
    something: string; 
} 

export class SomeClass { 
    protected metadata: Metadata; 
    protected subItems: SomeClass[]; 
    constructor() { 
    } 
} 

export class OtherClass extends SomeClass { 
    constructor() { 
     super(); 
     this.metadata = null; 
    } 
} 

var x = new SomeClass(); 

// Not allowed 
// x.metadata = null; 

Выполните команду:

C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.1>tsc --module amd c:\Temp\app.ts 

Заботясь, чтобы убедиться, что вы указываете на 1.1 папку в папке машинопись SDK.

Выход должно быть:

C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.1> 

т.е. ничего, кроме вас теперь есть app.js файл.

Вы также можете повторно запустить тест после раскомментирован x.metadata = null; линии - в этот момент вы должны получить сообщение об ошибке:

c:/Temp/app.ts(22,1): error TS2445: Property 'metadata' is protected and only accessible within class 'SomeClass' and its subclasses.

Следующие шаги ...

Если выше не, пожалуйста, сообщите подробности проблемы.

Единственный реальный ответ, который мы могли бы дать, хотя он удаляет его и проверяет, что папка 1.1 ушла, прежде чем переустанавливать ее, извлекая установщик с сайта Microsoft (возможно, у вас плохой установщик или возникла некоторая проблема во время установки ?) Вы также можете проверить, что вы находитесь в Visual Studio Update 4, так как я тестирую его на Update 4.

Если вы работали должным образом, ваша Visual Studio не указала правильную версию.

Это может быть из-за файла проекта, как правильно упомянул Dick van den Brink. Убедитесь, что у вас есть <TypeScriptToolsVersion>1.1</TypeScriptToolsVersion> и что это единственный элемент с этим именем.

Он также может быть подключен к любым расширениям Visual Studio, которые могут взаимодействовать с вашим TypeScript (например, если у вас действительно старая версия Web Essentials - в этом случае обновите его - если это другое расширение, попробуйте отключить его).

2

Вы строите из Visual Studio или из командной строки? Что при установке разных версий SDK, а также потенциально пакета NPM во всем мире (если вы когда-либо устанавливали его), он может стать довольно запутанным в отношении того, какая версия будет поднята. Например, если я запускаю 'where tsc' из командной строки, я получаю следующие образы (и это не имеет 1.1 SDK на пути, хотя я в папке bin для тестирования последних битов)

S:\src\TypeScript\bin>where tsc 
S:\src\TypeScript\bin\tsc 
S:\src\TypeScript\bin\tsc.js 
C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\tsc.exe 
C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\tsc.js 
C:\Users\billti\AppData\Roaming\npm\tsc 
C:\Users\billti\AppData\Roaming\npm\tsc.cmd 

Можете ли вы проверить через «где tsc» места и заказать, чтобы PATH разрешал команду «tsc»?

При этом, если вы строите из проекта VS, он должен найти последний SDK через цель сборки. Это также происходит с новым проектом TypeScript (где следует ссылаться на последнюю версию и файл целей)?

Несоблюдение этого, и я ненавижу говорить это ... готово ... вы пытались перезагрузить? :-) Иногда обновления для PATH и т. Д. После установки не добираются до тех пор, пока процессы не перезагружатся, и такие вещи, как MSBuild, могут задерживаться в ожидании следующей сборки в качестве перфорированной оптимизации, а не выходить после завершения сборки (и, следовательно, не может сразу менять изменения окружающей среды).

3

Ответ на ваш вопрос: ReSharper 9.0 EAP. Он поддерживает функции TypeScript 1.3: «защищенный» модификатор и кортежи. Вы можете попробовать. Хотя, да, это предварительная версия, поэтому общая стабильность не гарантируется строго.

+0

Шахта была также ошибкой Resharper. Отключение Resharper для машинописного текста было удалено. –

+2

Извините, у нас была ошибка в обнаружении языка. В пакете TypeScript 1.3 есть компилятор/язык версии 1.3, но визуальные студийные инструменты версии 1.1, и именно поэтому ReSharper ошибся в этом: https://youtrack.jetbrains.com/issue/RSRP-427823. Теперь вы сможете указать версию TS вручную, если автоматическое обнаружение завершится с ошибкой. Исправление будет присутствовать в предстоящем EAP 8. – Anton

Смежные вопросы