You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TypeScript中让泛型类(如Hash)全局可用?

TypeScript 全局泛型类Hash的类型声明方案

要让自定义泛型类Hash在全局环境具备正确的类型提示,你需要在declare global块中同时扩展Window接口并声明全局类型,具体实现如下:

export {}

class Hash<K, V> {
  // 可添加类的具体实现,比如构造函数、核心方法
  constructor(initialEntries?: [K, V][]) {}
  set(key: K, value: V): void {}
  get(key: K): V | undefined {}
}

declare global {
  // 扩展Window接口,让window.Hash具备构造函数类型
  interface Window {
    Hash: typeof Hash;
  }

  // 在全局命名空间声明Hash实例类型,支持直接用Hash<K, V>做类型标注
  type Hash<K, V> = InstanceType<typeof Hash>;
}

window.Hash = Hash;

关键说明:

  • interface Window { Hash: typeof Hash; }:告诉TypeScriptwindow对象上存在Hash属性,其类型与我们定义的Hash类构造函数一致,确保通过window.Hash创建实例时能获取泛型提示。
  • type Hash<K, V> = InstanceType<typeof Hash>;:在全局命名空间声明Hash的实例类型,允许你直接在代码中使用Hash<string, number>这类类型标注,无需额外导入。

测试全局使用场景:

// 全局环境直接调用
const userHash = new Hash<string, string>();
userHash.set("name", "Alice");
const userName = userHash.get("name"); // userName类型为string | undefined

这样就能实现Hash类在全局环境的完整类型提示支持。

内容的提问来源于stack exchange,提问作者Alex Craft

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 13:25:08