前端 TypeScript 学习 Day03 - TS 高级类型

在 TypeScript 中,高级类型为我们提供了更强大、更灵活的数据结构。通过使用高级类型,我们可以更精确地定义变量的类型,从而提高代码的可维护性和可读性。这次我们将深入探讨 TypeScript 的一些高级类型,主要包含联合类型、交叉类型、映射类型以及条件类型。

1. 联合类型

联合类型允许一个变量可以是多种类型中的任意一种。在 TypeScript 中,可以使用竖线 | 来表示联合类型。例如:

function printId(id: number | string) {
    console.log(`Your ID is: ${id}`);
}

printId(101); // 输出: Your ID is: 101
printId('202'); // 输出: Your ID is: 202

在上述代码中,id 可以是 numberstring 类型,这使得我们的函数更加灵活。

2. 交叉类型

交叉类型用于将多个类型合并为一个类型。它可以将这些类型所包含的所有属性整合到一起。交叉类型使用 & 符号来表示。例如:

interface Person {
    name: string;
    age: number;
}

interface Contact {
    email: string;
    phone: string;
}

type Employee = Person & Contact;

const emp: Employee = {
    name: 'Alice',
    age: 30,
    email: 'alice@example.com',
    phone: '123-456-7890'
};

console.log(emp);

在这个例子中,Employee 结合了 PersonContact 的所有属性,使得我们的对象 emp 同时拥有 nameageemailphone

3. 映射类型

映射类型是从已有的类型中生成新类型。这允许我们对类型进行变换和扩展。常用的映射类型有 PartialRequiredReadonlyRecord。下面是一个使用 Partial 的例子:

interface User {
    id: number;
    name: string;
    age: number;
}

type PartialUser = Partial<User>;

const user: PartialUser = {
    id: 1,
    name: 'Bob'
    // age 属性可以省略
};

console.log(user);

PartialUser 类型的所有属性变为可选属性,方便我们在需要时只传递部分属性。

4. 条件类型

条件类型使我们能够根据条件动态选择类型。格式如下:T extends U ? X : Y,表示如果 TU 的子类型,则类型为 X,否则为 Y。示例:

type IsString<T> = T extends string ? '是字符串' : '不是字符串';

type Result1 = IsString<string>; // 类型为 '是字符串'
type Result2 = IsString<number>; // 类型为 '不是字符串'

console.log(Result1); // 输出: 是字符串
console.log(Result2); // 输出: 不是字符串

在这个例子中,IsString 是一个条件类型,它检查传入的类型是否为 string,并据此返回相应的字符串。

总结

以上是 TypeScript 高级类型的一些基本应用。通过熟练掌握这些类型,我们能够编写出更加健壮、易于维护的代码。掌握它们的关键在于多实践,灵活运用。在实际开发中,高级类型能够帮助我们处理复杂的数据结构,实现更灵活的类型定义。希望大家能够继续深入学习并在项目中应用这些知识。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部