forEach循环和.map()循环的主要区别
forEach
- 遍历数组中的元素。
- 为每个元素执行回调。
- 无返回值。
map
- 遍历数组中的元素
- 通过对每个元素调用函数,将每个元素“映射(map)”到一个新元素,从而创建一个新数组。
.forEach和.map()的主要区别在于.map()返回一个新的数组。如果你想得到一个结果,但不想改变原始数组,用.map()。如果你只需要在数组上做迭代修改,用forEach
Promise代替回调函数有什么优缺点?
- 避免可读性极差的回调地狱。
- 使用.then()编写的顺序异步代码,既简单又易读。
- 使用Promise.all()编写并行异步代码变得很容易。
==和===的区别是什么
== 是抽象相等运算符,而 === 是严格相等运算符。== 运算符是在进行必要的类型转换后,再比较。=== 运算符不会进行类型转换,所以如果两个值不是相同的类型,会直接返回 false 。使用 == 时,可能发生一些特别的事情
什么是类型断言
类型断言允许程序员手动指定一个值的类型。这在需要明确告诉编译器某个值的类型时非常有用
const和readonly的区别
const用于声明常量值。一旦被赋值后,其值将不能被重新赋值或修改。
常量必须在声明时就被赋值,并且该值不可改变。
常量通常用于存储不会发生变化的值,例如数学常数或固定的配置值。
readonly关键字用于标记类的属性,表明该属性只能在类的构造函数或声明时被赋值,并且不能再次被修改。
readonly属性可以在声明时或构造函数中被赋值,但之后不能再被修改。
readonly属性通常用于表示对象的某些属性是只读的,防止外部代码修改这些属性的值。
总结来说,const主要用于声明常量值,而readonly则用于标记类的属性使其只读。
TypeScript 中 any 类型的作用是什么,滥用会有什么后果
1、代码可读性下降 2、类型安全受损 3、潜在的运行时错误
TypeScript数据类型
在TypeScript中,常见的数据类型包括以下几种:
-
基本类型:
number: 表示数字,包括整数和浮点数。string: 表示文本字符串。boolean: 表示布尔值,即true或false。null、undefined: 分别表示null和undefined。symbol: 表示唯一的、不可变的值。
-
复合类型:
array: 表示数组,可以使用number[]或Array<number>来声明其中元素的类型。tuple: 表示元组,用于表示固定数量和类型的数组。enum: 表示枚举类型,用于定义具名常量集合。
-
对象类型:
object: 表示非原始类型,即除number、string、boolean、symbol、null或undefined之外的类型。interface: 用于描述对象的结构,并且可以重复使用。
-
函数类型:
function: 表示函数类型。void: 表示函数没有返回值。any: 表示任意类型。
-
高级类型:
union types: 表示一个值可以是几种类型之一。intersection types: 表示一个值同时拥有多种类型的特性。