У меня есть более старый проект typescript, который использует метод /typings/tsd.json для обработки файлов .d.ts, а также использует ключевое слово Typescript module
для компиляции исходного кода в шаблон модуля javascript IIFE. Параметр модуля в tsconfig.json (commonjs/amd/etc.) игнорируется этим ключевым словом.
Для демонстрации я добавляю в этот проект более новый машинописный код, в котором используется более типичный метод ключевых слов import
и export
с загрузчиком модулей SystemJS, с файлами .d.ts в /node_modules/@types/.
После некоторой гимнастики Gulp/SystemJS все это работает вместе во время выполнения, и я на пути к тому, чтобы уложиться в срок. Но у меня возникли проблемы во время компиляции в одном сценарии, который я хотел бы решить.
Когда я изменяю старый код, чтобы использовать класс (модель) из нового кода, я хочу, чтобы старый код знал о .d.ts нового кода. Поэтому я добавил в начало файла старого кода /// <reference path="../../newercode/feature4/models/NewerModels.d.ts"/>
. (В качестве альтернативы я помещаю ту же строку в tsd.d.ts, но получаю тот же результат.)
Компилятор жалуется, что мой старый код «имеет или использует частное имя NewModel».
Внутри NewerModels.d.ts ключевые слова import
и export
все еще присутствуют, в то время как ни один из файлов .d.ts уже в /typings/ не использует эти ключевые слова. Эти ключевые слова являются причиной ложной ошибки компилятора.
Устаревшему проекту нужны файлы окружения .d.ts, новый код создает файлы без окружения.
Могу ли я что-нибудь с этим поделать?
tsd
, перейти на использование@types
. Вы должны быть в состоянии сделать это одним выстрелом. - person unional   schedule 14.09.2017@types
, должны иметь такой же синтаксис. Исходная библиотека по-прежнему остается той же библиотекой CommonJS (если это не изменится, вам придется иметь дело с управлением версиями).tsd
получает файлы из DefinitelyTyped и так же, как@types
. Команда TS неплохо поработала и преобразовала формат. Дайте ему попробовать, чтобы увидеть, если это работает. - person unional   schedule 14.09.2017NewModel
. Может быть, вы не включили его в свойpackage.json/dist
? - person unional   schedule 14.09.2017