目前,我正在将一些角度库重构到NX工作区中。工作区由多个视频播放器库组成。

@只包含YouTube的类型,而不包含DailyMotion、Vimeo (不是正确的)或SoundCloud的类型。在过去,我可以通过添加一个文件来解决这个问题。
src/lib/接口/vimeo.ts
declare namespace Vimeo {
export class Player {
...
}
}到我的工作区,并在我的组件中引用它:
/// <reference path="../../interfaces/vimeo.ts" />
@Component({
selector: 'vimeo-player'
})
export class VimeoPlayerComponent { }这将导致生产建设的成功。
但是,如果我尝试在我的新项目中做同样的事情,我将从NX获得以下信息:

所以我试着通过:
src/types/vimeo/index.d.tstsconfig.lib.json "types": [ "node", "vimeo" ]"include": ["**/*.ts", "src/types/vimeo/index.d.ts"]‘
import 'vimeo';
import { ... } from '...';
@Component({
selector: 'vimeo-player',
})
export class VimeoPlayerComponent {
...
}现在,在VS代码中,我可以从组件中轻松地单击Vimeo player,因此我假设声明文件应该按预期工作,但在运行时仍然是这样。
npm run nx run-many -- --target=build --projects=mintplayer-ng-player-progress,mintplayer-ng-vimeo-api,mintplayer-ng-vimeo-player --configuration production我仍然收到以下错误:
error TS2688: Cannot find type definition file for 'vimeo'.
The file is in the program because:
Entry point of type library 'vimeo' specified in compilerOptions
libs/mintplayer-ng-vimeo-player/src/lib/components/vimeo-player/vimeo-player.component.ts:40:29 - error TS2304: Cannot find name 'Vimeo'.
40 this.player = new Vimeo.Player(this.domId, {
~~~~~这过去很好,编译时没有错误,比如这里,但是现在我得到了上面的错误。新的存储库(NX工作区)是推到这里。
从今天起,您推荐使用原生javascript库并添加棱角类型的方法是什么?
发布于 2022-02-03 22:05:53
我已经能够通过放置就像这里类型并从tsconfig.lib.json引用这个文件夹来使其正常工作。types文件夹必须包含一个以您想要的类型命名的文件夹(如vimeo),以及index.d.ts中的文件夹。
在您的类型记录代码中不需要import语句。
遗憾的是,对于每个需要javascript库类型的应用程序/库,您似乎都必须这样做。
https://stackoverflow.com/questions/70970135
复制相似问题