这只是我项目中某些模块的示例。
npm模块多标签有https://github.com/mapbox/polylabel个TypeScript类型定义。现在,当我确实安装npm install --save @types/polylabel
时,我得到了类型,但是当我安装npm install --save polylabel
时,我得到了npm模块,它是自己的。
所以我的问题是如何导入polylabel
,但要让该模块使用来自该@types/polylabel
的TypeScript类型定义?示例:
import polylabel from "polylabel";
export default class SomeClass extends Base {
console.log(polylabel(coordinates, 1.0))
}
现在这将不起作用,因为打字稿会尝试从模块本身导入没有功能的定义函数。
我应该将其自身模块包含在webpack中,还是将其自身包含在其他方法中? Webpack部分:
new webpack.ProvidePlugin({
polylabel: 'polylabel'
}),
我希望我想解决/需要解决的问题很清楚。
答案 0 :(得分:1)
只要您设置tsconfig.json
来引用@types
目录,它就会始终使用可用的类型。有时npm软件包会附带类型定义,但在很多情况下却没有。这是您需要运行npn install @types/<module> --save-dev
示例tsconfig.json
:
{
"compileOnSave": true,
"compilerOptions": {
"baseUrl": "src",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es5",
"typeRoots": [
"node_modules/@types" // <-- This guy
],
"lib": [
"es2016",
"dom"
]
},
"exclude": [
"node_modules",
"e2e"
]
}