Вы можете определить, связана ли проблема с 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 - в этом случае обновите его - если это другое расширение, попробуйте отключить его).
Можете ли вы опубликовать пример своего кода, поскольку изображение немного перечеркнуто для меня, чтобы честно воссоздать то, что у вас может быть? – Fenton
@Steve Fenton добавлен код. проблема заключается в том, что синтаксический анализатор не распознает «защищенный» идентификатор, а также все новые функции в TS 1.3 – Romko
Этот фрагмент кода будет делать - теперь я могу видеть контекст, который вы добавили 'protected' to. (т. е. я ожидал бы ошибки, если бы у вас не было этого в классе, который ваш образ не показывает). – Fenton