自定义.d.ts文件无效?LeaderLine不是构造函数问题求助
解决LeaderLine加类型定义后报“LeaderLine is not a constructor”的问题
问题根源
leader-line本身不是标准ES模块,你用import { LeaderLine } from 'leader-line'这种解构导入时,导出结构和运行时的实际对象不匹配,导致找不到构造函数。
具体解决步骤
先装对类型包
确保已经安装了官方类型定义:npm install @types/leader-line --save-dev调整导入方式
别用解构导入,换成这两种方式:- 默认导入:
import LeaderLine from 'leader-line'; - 直接声明全局变量(适合原本通过脚本标签引入的场景):
declare var LeaderLine: typeof import('leader-line').LeaderLine;
- 默认导入:
适配脚本引入场景
如果你的原始项目是在angular.json的scripts里加了leader-line的文件路径,那组件里不用额外导入,直接用全局的LeaderLine就行,类型定义会自动生效:"scripts": [ "node_modules/leader-line/leader-line.min.js" ]极端情况适配
要是以上都不行,就手动适配导出结构:import * as LeaderLineModule from 'leader-line'; const LeaderLine = (LeaderLineModule as any).default || LeaderLineModule.LeaderLine;
验证代码
创建实例时确保写法正确:
const line = new LeaderLine( document.getElementById('start'), document.getElementById('end') );
内容的提问来源于stack exchange,提问作者Tucaen
相关产品推荐
相关产品推荐

