TypeScript 如何创建条件类型
在本文中,我们将看到如何在TypeScript中创建条件类型。
通过做出决策,使函数能够处理不同类型的输入。条件类型根据条件定义值的类型。现在,条件类型类似于条件语句,但与条件语句相同的是,条件语句用于根据特定条件选择代码的执行流程,而条件类型用于为值选择不同的类型。
语法: 我们可以使用三元运算符和extends来创建条件类型。
Type1 extends Type2 ? for One value : for different value;
在这里,extend函数作为比较函数,检查Type1是否具有Type2的属性,如果是,则跳转到真分支,否则跳转到假分支。
现在通过以下示例来理解:
示例1: 在此示例中,我们将创建条件类型,它接受值并检查它是否具有number属性。如果有number属性,条件类型将对调用条件类型的类型进行赋值,否则将其赋值为never。
Javascript
// Distributive property of Typescript
type return_dis<D>= D extends number ? D : never;
type show = number;
// Conditional types for number
type new_number = return_dis<show>;
let n1 : new_number = 88;
console.log(n1);
console.log(typeof n1)
输出:
88
number
示例2: 现在,我们将通过缩小输入数据的功能来创建条件类型。在创建条件类型的过程中,我们将过滤掉包含某个值的特定输入类型。在这里,我们使用扩展函数和一组值来缩小条件类型。首先,我们将创建条件类型,检查属性是否具有数字字符串或布尔值,如果具有
Javascript
type Conditional<G> = G extends {typeof : number|string|Boolean} ?
G :"This is an error";
let n = 55;
type nu = Conditional<typeof n>;
let s = "hello world";
type Str = Conditional<s>;
let b = Boolean;
type Boo = Conditional<typeof b>;
let k = null;
type SecondCond = Conditional<typeof k>;
let l1: nu = 88;
console.log(l1);
let l2: Str = "Hello Geeks";
console.log(l2);
let l3: Boo = true;
console.log(l3);
let l: SecondCond = "This is an error";
console.log(l);
输出:
**88**
**Hello Geeks**
**true**
**This is an error**
示例 3: 在此示例中,我们将首先为数字和字符串创建一个条件类型。然后,我们将对字符串和数字使用相同的条件类型。
Javascript
// Distributive property of Typescript
type return_dis<D>= D extends number|string ? D : never;
type show = number|"Geek";
// Conditional types for number
type new_number = return_dis<show>;
let n1 : new_number = 88;
console.log(n1);
// Same type is used for string also
type new_Geek = return_dis<show>;
let G1 : new_Geek = "Hey Geeks";
console.log(G1)
输出:
88
Hey Geeks
极客教程