TypeScript 面试问题

来源:undefined 2025-01-12 01:16:20 0

TypeScript 面试宝典:核心概念与实用技巧

本文涵盖了typescript的核心概念和实用技巧,旨在帮助你更好地应对typescript面试。

一、TypeScript概述

TypeScript是JavaScript的超集,它添加了静态类型系统,从而提升代码质量,并在运行前发现错误。它支持接口、枚举、泛型等特性,增强了代码的可读性和可维护性。

二、类型赋值

显式类型赋值: 直接指定变量的类型,例如:let firstName: string = "rutvik";

隐式类型赋值: TypeScript根据值推断类型,例如:let age = 23; (会被推断为number)

三、any、unknown和never类型比较

any: 可以赋值任何类型的值,类型检查器会忽略对any类型变量的操作。 例如:let x: any = 10; x = hello;

unknown: 比any更安全,赋值任何类型的值,但使用前必须进行类型检查。例如:let y: unknown = 10; if (typeof y === number) { console.log(y.toFixed(2)); }

never: 表示永不发生的值,通常用于抛出错误或永不返回的函数。例如:function throwError(message: string): never { throw new Error(message); }

四、数组类型

使用[]指定数组元素类型,例如:const names: string[] = ["rutvik", "rohit", "virat"];

readonly关键字可以创建只读数组,防止修改数组元素。例如:const names: readonly string[] = ["rutvik", "rohit", "virat"];

五、数组类型推断

如果未显式指定类型,TypeScript会根据数组元素自动推断类型。例如:const numbers = [1, 2, 3]; (会被推断为number[])

六、元组 (Tuple)

元组是具有预定义长度和类型的数组。例如:let ourTuple: [number, boolean, string] = [5, false, coding hero];

七、只读元组

八、对象类型

使用接口或类型别名定义对象类型。

接口: interface CarTypes { brand: string; model: string; year: number; }

类型别名: type CarTypes = { brand: string; model: string; year: number; };

九、可选属性

在属性名后添加?表示可选属性。例如:interface CarTypes { brand: string; model: string; year?: number; }

十、枚举 (Enum)

枚举定义一组命名常量。

数字枚举:enum Direction { Up, Down, Left, Right }

字符串枚举:enum Direction { Up = "up", Down = "down", Left = "left", Right = "right" }

十一、类型别名

类型别名允许为现有类型创建别名。例如:type StringOrNumber = string | number;

十二、接口 (Interface)

接口主要用于定义对象的形状。

十三、接口扩展

使用extends关键字扩展接口。例如:interface ColorSquare extends Square { color: string; }

十四、联合类型与交叉类型

联合类型: 表示变量可以是多种类型中的一种。例如:let id: string | number;

交叉类型: 表示变量必须同时满足多种类型。例如:type Worker = Person & Employee;

十五、函数类型

指定参数类型和返回值类型。例如:function add(a: number, b: number): number { return a + b; }

可选参数、默认参数和剩余参数:

可选参数:function subtract(a: number, b: number, c?: number): number { ... } 默认参数:function multiply(a: number, b: number = 10): number { ... } 剩余参数:function add(a: number, b: number, ...rest: number[]): number { ... }

十六、类型断言

类型断言用于告诉编译器变量的实际类型。例如:let y: unknown = welcome; console.log((y as string).length); 或 console.log((y).length);

十七、泛型

泛型允许编写可重用组件,适用于多种类型。例如:function identity(arg: T): T { return arg; }

十八、实用程序类型

TypeScript提供了一些实用程序类型,例如Partial、Required、Readonly、Pick、Omit、Record、Exclude、Extract、NonNullable、ReturnType、InstanceType、Parameters等,用于简化类型操作。 (文中已详细描述)

希望以上内容能够帮助你更好地理解TypeScript,并在面试中取得好成绩。 记住,实践是关键,多编写TypeScript代码,才能更好地掌握这些知识点。

以上就是TypeScript 面试问题的详细内容,更多请关注php中文网其它相关文章!

最新文章