【Typescript进阶】条件类型 (全面,多实例)

当我们在编写 TypeScript 代码时,有时候需要根据某些条件来确定类型的行为。比如,在函数中根据不同的输入类型返回不同的输出类型,或者根据一个变量的值来决定返回的类型是一个数组还是一个对象。这时候,我们就可以使用 TypeScript 中的条件类型来实现这样的行为。

一,基础用法

下面我来举几个例子,以便更好地理解条件类型的概念和用法。

1.1 根据类型参数判断返回类型

type ReturnType<T> = T extends (...args: any[]) => infer R ? R : never;

const foo = (): string => {
   
  return "hello";
}

const bar = (): number => {
   
  return 42;
}

const str: ReturnType<typeof foo> = "hello"; // string
const num: ReturnType<typeof bar> = 42; // number

在这个例子中,我们定义了一个 ReturnType<T> 类型,它接受一个泛型类型参数 T。这个类型参数代表一个函数类型,我们通过 T extends (...args: any[]) => infer R 这个条件语句来判断 T 是否是一个函数类型,并提取其返回值类型 R。如果 T 是一个函数类型,则返回 R 类型,否则返回 never 类型。

然后,我们定义了两个函数 foobar,分别返回字符串和数字。我们使用 typeof 操作符来获取这两个函数的类型,并通过 ReturnType<typeof foo>ReturnType<typeof bar> 来获取它们的返回类型。

最后,我们声明了两个变量 strnum,并分别将它们声明为 ReturnType<typeof foo>ReturnType<typeof bar> 类型。这样就可以根据不同的函数类型来确定返回类型。

type IsOptional<T> = T extends {
    [k: string]: infer
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
TypeScript是一种JavaScript的超集,它添加了静态类型检查和更强大的类型系统,以提供更好的开发工具支持和更高的代码可靠性。对于 TypeScript进阶使用,有几个方面可以探索和学习。 一方面,可以深入了解和应用类型操作符,如typeof和ReturnType。typeof运算符可以在类型上下文中使用它来引用变量或属性的类型。例如,可以使用typeof操作符获取变量的类型并将其赋值给另一个变量。例如,let s = "hello"; let n: typeof s; 将变量s的类型赋值给变量n。 ReturnType则可以获取函数的返回类型。它接受一个函数类型,并产生它的返回类型。通过使用ReturnType,可以在编译时检查函数的返回类型是否符合预期。 另一方面,可以研究和应用条件类型条件类型在给定联合类型时变得可分配。可以使用条件类型将泛型类型分配给不同的类型,以实现更灵活的类型转换和操作。例如,可以使用条件类型将泛型类型转换为数组类型。通过定义一个条件类型ToArray<Type>,可以将任意类型转换为该类型的数组类型。例如,可以使用条件类型ToArray来将string | number联合类型转换为string[] | number[]类型。 此外,还可以学习其他高级概念,如映射类型、索引类型、交叉类型和联合类型。这些概念可以帮助更好地理解和应用TypeScript的强大类型系统,以提高代码的可读性和可维护性。 总之,TypeScript进阶包括深入了解和应用类型操作符、条件类型以及其他高级概念,以实现更灵活和可靠的类型定义和操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jierm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值