程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了TypeScript:在全局窗口上声明构造函数大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决TypeScript:在全局窗口上声明构造函数?

开发过程中遇到TypeScript:在全局窗口上声明构造函数的问题如何解决?下面主要结合日常开发的经验,给出你关于TypeScript:在全局窗口上声明构造函数的解决方法建议,希望对你解决TypeScript:在全局窗口上声明构造函数有所启发或帮助;

我试图在 window 对象上声明一个预期的构造函数。

declare global {
  interface Window {
    MyAPI: {
      MyClasstype: any
    }
  }
}

expect(new window.MyAPI.MyClasstype()).toNotBe(undefined)

any 应该是什么?

解决方法

它应该是你的类的类型,例如

class MyClass {
  constructor(public name: String) {}
}

declare global {
  interface Window {
    MyApi: {
      MyClassType: MyClass;
    };
  }
}
,

打字稿的一个好处是你可以使用类作为类型

所以在你的情况下,让你的班级

class MyClass {}

在声明中

@H_173_5@myClassType: MyClass
,

看起来您希望 window.MyApi.MyClassType 成为您的类/构造函数而不是实例。如果您希望它是一个实例,那么您可以使用 @H_173_5@myClassType 作为类型。否则你需要typeof MyClassType

但是为了让它正常工作,如果您想使用 declare global 语法,您需要确保声明的文件需要包含至少一个 import{{1}否则你会得到一个错误“全局范围的增强只能直接嵌套在外部模块或环境模块声明中。”

这是一个工作示例:

export

但如果您不希望文件有任何导入或导出,这也是另一种可能性:

class MyClassType {
    // Your class implementation
}
export default MyClassType;

window.MyApi = {
  MyClassType: MyClassType,};

declare global {
  interface Window {
    MyApi: {
      MyClassType: typeof MyClassType;
    };
  }
}

这些让您可以像这样访问 API:

class MyClassType {
    // Your class implementation
}

declare var MyApi: { // eslint-disable-line
  MyClassType: typeof MyClassType;
};

window.MyApi = {
  MyClassType: MyClassType,};

大佬总结

以上是大佬教程为你收集整理的TypeScript:在全局窗口上声明构造函数全部内容,希望文章能够帮你解决TypeScript:在全局窗口上声明构造函数所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。