Файл .d.ts
обычно размещается рядом с файлом .ts
, для которого указывается типография. Хотя компиляторы ts просто сопоставляют файлы с именами модулей, сами по себе, даже не помещая их рядом.
Он должен работать так же с веб-пакетом, компилятор просто знает, как найти наборы, если вы просто укажете на неготуда, где они есть.
Например, у меня есть папка с названием typings, в которую я помещаю все свои пользовательские наборы для моего экспресс-приложения. И мой tsconfig выглядит как
{
"compilerOptions": {
"noImplicitAny": true,
"esModuleInterop": true,
"target": "es5"
},
"include": [
"app/**/*"
]
}
И так как моя папка для ввода находится в ./app
, у компилятора нет проблем, поиск моих файлов .d.ts
и мой gulpfile.js выглядит как
var gulp = require('gulp');
var ts = require('gulp-typescript');
var tsProject = ts.createProject('tsconfig.json');
gulp.task('buildTS', () => {
return tsProject.src()
.pipe(tsProject())
.js.pipe(gulp.dest('build'));
});
gulp.task('ts:watch', function (cb) {
gulp.watch('./app/**/*.ts', gulp.series(['buildTS', 'server']))
cb(null);
});
И я хотел использовать пакет под названием custom-env, в котором нет ts-типов в репозитории @types. поэтому я просто создал custom-env.d.ts
с содержимым
declare module 'custom-env';
// This is a workaround. Always provide full and correct typings.
, чтобы я мог его импортировать и использовать. Без этого зависимый файл не будет компилироваться. Надеюсь, это поможет.