5

Все о TS 2.x @types кажется таким потрясающим, но я не могу на всю жизнь понять, как заставить его работать правильно!Получение @types для работы в Visual Studio 2015 Обновление 3 с помощью TypeScript 2.1

  • Я Visual Studio 2015 установлен - версия 14.0.25431.01 Update 3
  • У меня есть машинопись 2.1.4 для установленной Visual Studio 2015, which I got from here
  • Веб-проект VS был настроен на использование машинопись 2.1 с <TypeScriptToolsVersion>2.1</TypeScriptToolsVersion>

Ниже приведена соответствующая часть от моего packages.json файла

"dependencies": { 
    "angular": "^1.5.9", 
    "angular-messages": "^1.5.9", 
    "angular-ui-bootstrap": "^2.3.0", 
    "angular-ui-router": "^0.3.2", 
    "moment": "^2.17.0", 
    "underscore": "^1.8.3" 
    }, 
    "devDependencies": { 
    "@types/angular": "^1.5.21", 
    "@types/angular-ui-bootstrap": "^0.13.36", 
    "@types/angular-ui-router": "^1.1.35", 
    "@types/jquery": "^2.0.34", 
    "@types/node": "^0.0.3", 
    "@types/signalr": "^2.2.32", 
    "@types/underscore": "^1.7.36" 
} 

И здесь не мой полный tsconfig.json файл

{ 
    "compilerOptions": { 
    "module": "commonjs", 
    "noImplicitAny": true, 
    "removeComments": true, 
    "sourceMap": true, 
    "target": "ES5" 
    }, 
    "typeAcquisition": { 
    "enable": true 
    } 
} 

Я также пробовал вариации с typeRoots и types указанного (один, другой, и, ни) внутри compilerOptions, но не повезло!

"typeRoots": [ 
     "./node_modules/@types" 
    ], 
    "types": [ 
     "angular", 
     "angular-ui-bootstrap", 
     "angular-ui-router", 
     "jquery", 
     "moment", 
     "signalr", 
     "underscore" 
    ] 

Я почистил сборки, перезапуске Visual Studio и т.д., но независимо от того, что я делаю, я просто получаю ошибки построения как

some-file.ts(8,22): error TS2304: Build:Cannot find name 'angular'. 
some-file.ts(12,41): error TS2694: Build:Namespace 'angular' has no exported member 'IScope'. 
some-file.ts(12,67): error TS2694: Build:Namespace 'angular' has no exported member 'IRootElementService'. 
another-file.ts(26,22): error TS2503: Build:Cannot find namespace 'moment'. 
another-file.ts(47,37): error TS2304: Build:Cannot find name 'moment'. 

Все определений типов существуют на диске в любом node_modules/@types или с соответствующим пакетом. Я понятия не имею, почему Visual Studio/TypeScript не может найти эти файлы! Я чувствую, что что-то было либо не готово к выпуску, либо мне не хватает чего-то чрезвычайно простого. Пожалуйста, позвоните мне в нужном направлении здесь

ответ

0

Если у вас еще нет, попробуйте удалить инструменты ввода-вывода из программ удаления/установки (у вас может быть несколько версий, как я), и переустановить инструменты для ввода текста v2. 1.4 через установочный пакет, который у вас уже есть. Двойная проверка в визуальной студии, что, то есть версия, которую вы используете (он должен иметь детали в «о Microsoft Visual Studio» в меню справки)

Вот мой TSconfig в случае, который помогает:

{ 
    "compilerOptions": { 
    "target": "es5", 
    "module": "system", 
    "moduleResolution": "node", 
    "sourceMap": true, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "removeComments": false, 
    "noImplicitAny": false, 
    "typeRoots": [ 
     "node_modules/@types" 
    ] 
    }, 
    "typeAcquisition": { 
    "enable": true 
    }, 
    "exclude": [ 
    "jspm_packages" 
    ] 
} 

Это работает для любых типов, которые экспортируют модуль, но у меня все еще были проблемы при импорте отдельных титров, когда они не являются модулями (т.е. просто интерфейсы и т. Д.).

Как правило, мне не приходилось делать никаких заявлений import * from x для библиотек и смогли просто использовать имя экспортируемого модуля напрямую.