我是一名新的打字稿开发人员,并且正在使用打字稿和webpack开发一个项目,一些用js编码的库需要一个.d.ts文件,但是我很困惑webpack如何找到{{ 1}}文件中包含.d.ts
?
这是我的猜测:
webpack将在“ node_modules”中找到名为import * as PIXI from 'pixi.js'
的文件夹,并找到
package.json,如果它具有pixi.js
属性,只需选择该文件作为.d.ts文件即可。
如果无法以1的方式找到.d.ts文件,则转到node_modules / @ types(或其他自定义文件夹),查找是否存在具有相同名称的文件夹types
,然后选择pixi.js
文件作为index.d.ts
文件。
.d.ts
,为什么?我知道官方不推荐使用module
关键字(由module
代替)。答案 0 :(得分:0)
.d.ts
文件通常放置在.ts
文件附近,它提供输入内容。尽管ts编译器只是将文件与模块名称匹配,但即使它们不相邻也可以单独使用。
它与webpack的工作原理相同,如果您只是将输入指向它们,编译器就会知道如何查找它们。
例如,我有一个名为Types的文件夹,在其中放置了我的Express应用程序的所有自定义键入。我的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的程序包,该程序包在@types回购中没有ts类型。所以我刚刚创建了一个包含内容的custom-env.d.ts
declare module 'custom-env';
// This is a workaround. Always provide full and correct typings.
以便我可以导入和使用它。没有此文件,从属文件将无法编译。希望这会有所帮助。