Отсутствуют типизации TypeScript с помощью browserify + babelify + tsify

Я пытаюсь шаг за шагом перенести проект Angular JavaScript (ES5) на TypeScript 2.0 и должен признать, что мне очень трудно.
Итак, сначала я изменил index.js на index.ts и использовал рекомендуемый метод установки типизации (npm install --save @types/node) вместо этого старого пути typings.json.

Настройка сборки использует gulp с browserify и теперь вводит tsify и babelify, как предложено здесь.

просмотреть

//...
.plugin(tsify)
.transform(babelify, {
      presets: ['es2015'],
      extensions: ['.ts', '.js']
})
//...

tsconfig.json

{
"files": [
    "assets/app/index.ts"
],
"compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false
}
}

Однако сборка завершается с ошибкой:

Ошибка TypeScript: .tmp/public/app/index.ts(4,15): ошибка TS2304: не удается найти имя «требуется».

tsify, похоже, не копирует установленные типы в выходной каталог, что вызывает указанную выше ошибку.
Любые предложения по решению проблемы?

EDIT
Копирование папки node_modules/@types в корень моего диска C: устраняет ошибку, но я понятия не имею, почему...


person lenny    schedule 20.10.2016    source источник


Ответы (1)


Если кто-то столкнется с такой же проблемой:

Исправлено явное добавление параметра typesRoot в tsconfig.json.

"typeRoots" : ["./node_modules/@types"]

Это «должно» быть настройкой по умолчанию, но по какой-то причине он ищет папку @types в корневом каталоге диска C:.

Из документов TypeScript:

Если указано typesRoots, будут включены только пакеты под typeRoots.

person lenny    schedule 20.10.2016
comment
Какую версию цифы вы используете? - person cartant; 21.10.2016
comment
Не могли бы вы создать для этого проблему? Это похоже на ошибку. Вам не нужно указывать typeRoots. Не могли бы вы также включить больше вашей конфигурации в проблему? Я не понимаю, как такой путь, как .tmp/public/..., должен оказаться в вашем сообщении об ошибке. - person cartant; 21.10.2016