当前位置: 首页 > 知识库问答 >
问题:

前端 - 这段 typescript 的类型定义作用是什么?

束雅达
2024-09-12
type NoInfer<T> = [T][T extends any ? 0 : never]

共有1个答案

朱阳晖
2024-09-12

在官方 5.4 增加 NoInfer 之前,可以使用这个类型避免传入的变量用于泛型推断。

function test<T>(a: T, b:(c: T)=>void){}

比如使用上面的这个函数时,传入的变量 a 和 函数 b 因为都包含了泛型 T,所以会共同作用于泛型 T 的推断。当 a 和 b 中的泛型不一致时会导致泛型 T 推断异常,比如 test(number, (string)=> void) 会导致 T 被推断为 never

function test<T>(a: T, b:(c: NoInfer<T>)=>void){}

使用 NoInfer 包装 b 函数的参数 c,意思是当推断泛型 T 时,不使用 b 的参数。使用上面的例子, test(number, (string)=> void) 会将泛型 T 推断为 number ,在函数 b 的参数位置会提示类型不匹配。

相关可以查看 ts 的官方发布文档。

https://devblogs.microsoft.com/typescript/announcing-typescri...

 类似资料:
  • 如上面代码所示,需要指定 arr 参数的数据类型,这个数据数据类型是 p1 或者 p2 参数的 key.请问这个改如何指定呢。

  • 定义一个类型 条件1:变量类型是一个字符串。 条件2:变量值不是 get "typescript": "~5.2.2"

  • 请问在TypeScript中, 我们定义一个类的时候,这个类是否也是type呢? 比如我们: 类型注解的时候,可以注释为Teacher:

  • 有看到过定义比较复杂的泛型类型: 请问下,为何需要定义这么多或的Type呢? 为何不直接定义: 为何需要把这些风马牛不相及的类型(T, Promise, Record)组在一起?

  • 在我的项目中,我希望有一个包含所有类型脚本定义的文件,如下所示: type_defs.tsx: 问题是,当我尝试导出typedefs时,如下所示: 我得到了错误: 正如我在网络中发现的那样,只能对typedef文件进行默认导出,这意味着我必须为每个类型定义准备一个文件,这绝对是荒谬的! 在我看来,不允许typedefs具有多个非默认导出的约束完全是无稽之谈,并且使编码变得多余且难以重用。拥有一个包

  • 我试图在typescript中编写一个去Bounce函数,但不确定设置分配给setTimeout的变量的类型。我的代码如下所示: