typescript 中这个泛型接口定义怎么理解?

export interface Cache<V = any> {
  value?: V;
  timeoutId?: ReturnType<typeof setTimeout>;
  time?: number;
  alive?: number;
}

这个 Cache 类型的定义,到底是定义了一个对象还是定义了一个函数 ?

Cache<V = any>

这里泛型 V,为什么要指定一个 any ?等于号是什么意思?

难以理解 …

阅读 1.9k
2 个回答

Cache 在这里是定义了一个对象。
V = any 表示如果没有提供泛型值给 V 就是 any 类型,并且这个对象中的 value 也是 any 类型。
等于号在这里是默认值的意思。

新手上路,请多包涵

代码中的 Cache 首先是一个接口,作为约束某个对象而存在。
泛型可以理解为类型的参数化,对接口 Cache 的重用。此处的"="符号就是默认赋值为 any。
也可以不默认赋值,但是在使用时,需要给一个类型参数:

// 此处传入 number,对value进行约束。
const cache: Cache<number> ={
  value: 123,
  ...
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进