当前位置:实例文章 » HTML/CSS实例» [文章]TypeScript基础篇 - TS日常类型 下篇

TypeScript基础篇 - TS日常类型 下篇

发布人:shili8 发布时间:2025-02-21 18:55 阅读次数:0

**TypeScript基础篇 - TS日常类型**

下篇:类型系统的基本概念、类型推断、类型注解等内容。

---

在上一篇文章中,我们已经了解了 TypeScript 的基本概念、变量声明、数据类型等内容。今天我们将继续讨论 TypeScript 中的类型系统,包括类型推断、类型注解、泛型等内容。

###1. 类型推断TypeScript 提供了一个叫做类型推断(type inference)的功能,它可以自动地为变量或表达式推断出其类型。这种功能在 TypeScript 中非常有用,尤其是在使用 TypeScript 的初学者中。

下面是一个例子:

typescriptlet a =10; // 类型推断为 numberconsole.log(a); // 输出:10let b = 'hello'; // 类型推断为 stringconsole.log(b); // 输出:hello


在上面的例子中,我们没有显式地声明变量 `a` 和 `b` 的类型,TypeScript 会自动地根据赋值的内容来推断出其类型。

###2. 类型注解虽然 TypeScript 提供了类型推断功能,但是有时我们可能需要手动地指定某个变量或表达式的类型。这就是类型注解(type annotation)的作用。

下面是一个例子:

typescriptlet a: number =10; // 指定类型为 numberconsole.log(a); // 输出:10let b: string = 'hello'; // 指定类型为 stringconsole.log(b); // 输出:hello


在上面的例子中,我们使用 `:` 来指定变量 `a` 和 `b` 的类型。

###3. 泛型泛型(generic)是 TypeScript 中一个非常强大的功能,它允许我们创建可以处理多种类型的函数或类。这种功能在 TypeScript 中非常有用,尤其是在使用 TypeScript 的高级开发者中。

下面是一个例子:

typescriptfunction identity<T>(arg: T): T {
 return arg;
}

console.log(identity<number>(10)); // 输出:10console.log(identity<string>('hello')); // 输出:hello


在上面的例子中,我们使用泛型 `T` 来创建一个函数 `identity`,这个函数可以处理多种类型的参数。

###4. 类型别名类型别名(type alias)是 TypeScript 中的一个功能,它允许我们给某个类型起一个新的名字。这种功能在 TypeScript 中非常有用,尤其是在使用 TypeScript 的高级开发者中。

下面是一个例子:

typescripttype StringOrNumber = string | number;

let a: StringOrNumber = 'hello'; // 类型为 stringconsole.log(a); // 输出:hellolet b: StringOrNumber =10; // 类型为 numberconsole.log(b); // 输出:10


在上面的例子中,我们使用类型别名 `StringOrNumber` 来给某个类型起一个新的名字。

###5. 联合类型联合类型(union type)是 TypeScript 中的一个功能,它允许我们创建一个可以包含多种类型的值。这种功能在 TypeScript 中非常有用,尤其是在使用 TypeScript 的高级开发者中。

下面是一个例子:

typescripttype StringOrNumber = string | number;

let a: StringOrNumber = 'hello'; // 类型为 stringconsole.log(a); // 输出:hellolet b: StringOrNumber =10; // 类型为 numberconsole.log(b); // 输出:10


在上面的例子中,我们使用联合类型 `StringOrNumber` 来创建一个可以包含多种类型的值。

###6. 交叉类型交叉类型(intersection type)是 TypeScript 中的一个功能,它允许我们创建一个可以包含多个类型的值。这种功能在 TypeScript 中非常有用,尤其是在使用 TypeScript 的高级开发者中。

下面是一个例子:

typescripttype StringOrNumber = string & number;

let a: StringOrNumber = 'hello'; // 类型为 stringconsole.log(a); // 输出:hellolet b: StringOrNumber =10; // 类型为 numberconsole.log(b); // 输出:10


在上面的例子中,我们使用交叉类型 `StringOrNumber` 来创建一个可以包含多个类型的值。

###7. null 和 undefinednull 和 undefined 是 TypeScript 中两个特殊的类型,它们分别表示空值和未定义值。这种功能在 TypeScript 中非常有用,尤其是在使用 TypeScript 的高级开发者中。

下面是一个例子:

typescriptlet a: null = null; // 类型为 nullconsole.log(a); // 输出:nulllet b: undefined = undefined; // 类型为 undefinedconsole.log(b); // 输出:undefined


在上面的例子中,我们使用类型 `null` 和 `undefined` 来表示空值和未定义值。

###8. nevernever 是 TypeScript 中一个特殊的类型,它表示永远不会发生的值。这种功能在 TypeScript 中非常有用,尤其是在使用 TypeScript 的高级开发者中。

下面是一个例子:

typescriptfunction error(message: string): never {
 throw new Error(message);
}

error('Something went wrong'); // 永远不会返回


在上面的例子中,我们使用类型 `never` 来表示永远不会发生的值。

---

本篇文章我们讨论了 TypeScript 中的类型系统,包括类型推断、类型注解、泛型等内容。这些功能在 TypeScript 中非常有用,尤其是在使用 TypeScript 的高级开发者中。通过阅读本篇文章,你应该能够理解 TypeScript 中类型系统的基本概念,并且能够应用这些功能来创建更复杂和更强大的 TypeScript代码。

如果你有任何问题或疑问,请随时在评论区留言,我们将尽快回复并帮助你解决问题。

其他信息

其他资源

Top