📜  如何在 TypeScript 中创建条件类型?

📅  最后修改于: 2022-05-13 01:56:44.824000             🧑  作者: Mango

如何在 TypeScript 中创建条件类型?

在本文中,我们将了解如何在 TypeScript 中创建条件类型。

做出决定使函数对不同类型的输入有用。条件类型,顾名思义,就是根据条件定义值的类型。现在,条件类型看起来像是一个条件语句,虽然,条件语句用于根据某些条件选择代码流和用于为值选择不同类型的条件类型的方式是相同的。

语法:我们可以使用三元运算符创建条件类型,并在 TypeScript 中扩展。

Type1 extends Type2 ? for One value : for different value;

这里 extend 用作比较函数,它检查 Type1 是否具有 Type2 的属性,如果是,则跳转到 true 分支,否则在 false 分支中跳转。

现在让我们通过下面的例子来理解。

示例 1:在此示例中,我们将创建条件类型,它接受值并检查它是否具有数字属性和扩展。如果它具有 number 条件类型的属性,则将类型分配给条件类型的调用者,否则它永远不会分配给类型。

Javascript
// Distributive property of Typescript
type return_dis= D extends number ? D : never;
 
type show = number;
 
// Conditional types for number
type new_number = return_dis;
 
let n1 : new_number = 88;
console.log(n1);
 
console.log(typeof n1)


Javascript
type Conditional = G extends {typeof : number|string|Boolean} ?
                      G :"This is an error";
 
let n = 55;
type nu = Conditional;
 
let s = "hello world";
type Str = Conditional;
 
let b = Boolean;
type Boo = Conditional;
 
let k = null;
type SecondCond = Conditional;
 
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);


Javascript
// Distributive property of Typescript
type return_dis= D extends number|string ? D : never;
 
type show = number|"Geek";
 
// Conditional types for number
type new_number = return_dis;
 
let n1 : new_number = 88;
console.log(n1);
 
// Same type is used for string also
type new_Geek = return_dis;
 
let G1 : new_Geek = "Hey Geeks";
 
console.log(G1)


输出:

88
number

示例 2:现在,我们将通过缩小输入数据的功能来创建条件类型。在这种创建条件类型的类型中,我们将过滤掉包含某些值的特定输入类型。在这里,我们使用扩展函数和一组值来缩小条件类型。首先,我们将创建条件类型,检查属性是否具有数字字符串或布尔值,然后检查是否具有

Javascript

type Conditional = G extends {typeof : number|string|Boolean} ?
                      G :"This is an error";
 
let n = 55;
type nu = Conditional;
 
let s = "hello world";
type Str = Conditional;
 
let b = Boolean;
type Boo = Conditional;
 
let k = null;
type SecondCond = Conditional;
 
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 extends number|string ? D : never;
 
type show = number|"Geek";
 
// Conditional types for number
type new_number = return_dis;
 
let n1 : new_number = 88;
console.log(n1);
 
// Same type is used for string also
type new_Geek = return_dis;
 
let G1 : new_Geek = "Hey Geeks";
 
console.log(G1)

输出:

88
Hey Geeks