webpack5 声明全局interface 不生效

错误出现:
src\globals.d.ts 声明全局 interface

import { ColorRepresentation } from "three";
interface Scene {
 background?: ColorRepresentation;
 models?: any;
 needAxesHelper?: boolean;
}

glEquM.ts项目中引用

export class glEquM {
	sceneInfo: Scene
}

出现错误提示没有声明Scene
在这里插入图片描述

问题出现原因

*.d.ts导入import其它类型会导致全局类型失效

如果在 .d.ts 文件中使用了 import 或者 require 等方式引入了其他模块,那么 ts 就会将其视为一个模块,从而导致文件下的所有类型声明直接失效。

问题解决方法

通过创建全局命名空间的方式,将想要使用的类型声明挂载到全局命名空间上。

src\globals.d.ts修改代码如下

import { ColorRepresentation } from "three";

declare namespace glEquMType {
  interface Scene {
    background?: ColorRepresentation;
    models?: any;
    needAxesHelper?: boolean;
  }
}
export = glEquMType
export as namespace glEquMType

glEquM.ts项目中引用

export class glEquM {
    sceneInfo: glEquMType.Scene
}

解决啦~ OVER

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值