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中文网其它相关文章!