Typescript的基本介绍和部分面试题

发布于:2024-05-20 ⋅ 阅读:(182) ⋅ 点赞:(0)

Typescript 优势:

静态类型化,允许编程人员编写更优秀的代码并对其进行维护。
大型的开发项目,使用TypeScript工具来进行重新构造更容易、便利快捷。
类型更加安全,在编码期间检测错误的功能,而不是在编译项目时检测错误。
干净的ECMAScript6代码,自动完成和动态输入等因素有助于提高开发人员的工作效率。

TypeScript 可以使用 JavaScript 中的所有代码和编码概念,TypeScript 是为了使 JavaScript 的开发变得更加容易而创建的。比如,TypeScript 使用类型和接口等概念来描述正在使用的数据,这使开发人员能够快速检测错误并调试应用程序
TypeScript 从核心语言方面和类概念的模塑方面对 JavaScript 对象模型进行扩展。
JavaScript 代码可以在无需任何修改的情况下与 TypeScript 一同工作,同时可以使用编译器把TypeScript 代码转换为 JavaScript。
TypeScript 通过类型注解提供编译时的静态类型检查。
TypeScript 中的数据要求带有明确的类型,JavaScript不要求。
TypeScript 为函数提供了缺省参数值。
TypeScript 引入了 JavaScript 中没有的“类”概念。
TypeScript 中引入了模块的概念,可以把声明、数据、函数和类封装在模块中。

2.TypeScript中const和readonly的区别是什么?枚举和常量的区别?type(类别名的) 和 interface (接口)的区别?

const 和readonly区别

1,const用于变量,readonly用于属性
2,const在运行时检查,readonly在编译时检查
3,使用const变量保存的数组,可以使用push,pop等方法。但是如果使用ReadonlyArray声明的数组不能使用push,pop等方法

枚举和常量的区别?

枚举会被编译时会编译成一个对象,可以被当作对象使用
const 枚举会在 typescript 编译期间被删除,const 枚举成员在使用的地方会被内联进来,避免额外的性能开销

枚举会被编译成什么:

//枚举
enum Color {
  Red,
  Green,
  Blue
}
var sisterAn = Color.Red
// 会被编译成 JavaScript 中的 var sisterAn = Color.Red
// 即在运行执行时,它将会查找变量 Color 和 Color.Red

编译:
// 常量枚举
const enum Color {
  Red,
  Green,
  Blue
}
var sisterAn = Color.Red
// 会被编译成 JavaScript 中的 var sisterAn = 0
// 在运行时已经没有 Color 变量

可见,使用 常量枚举 会有更好的性能。
  定义的枚举,在经过编译器编译后是一个对象,这个对象我们可以在程序运行时使用,前面有说到。但有时定义枚举可能只是为了让程序可读性更好,而不需要编译后的代码,即不需要编译成对象。typescript中考虑到这种情况,所以加入了 const enum (完全嵌入的枚举)。
type(类别名的) 和 interface (接口)的区别?

类型别名可以为任何类型引入名称。例如基本类型,联合类型等
类型别名不支持继承
类型别名不会创建一个真正的名字
类型别名无法被实现(implements),而接口可以被派生类实现
类型别名重名时编译器会抛出错误,接口重名时会产生合并

3.TypeScript中any类型的作用是什么?

任意数据类型:any

1.如果是不同变量的话,可以是任意的数据类型
2.如果是对象的话,any不能够提示原有的属性和方法
3.未给初始值的变量类型为any

4.TypeScript中any,never,unknown和viod有什么区别?

unknown类型和any类型类似。与any类型不同的是unknown类型可以接受任意类型赋值,但是unknown类型赋值给其他类型前,必须被断言
never,never表示永远不存在的类型。比如一个函数总是抛出错误,而没有返回值。或者一个函数内部有死循环,永远不会有返回值。函数的返回值就是never类型。
void, 没有显示的返回值的函数返回值为void类型。如果一个变量为void类型,只能赋予undefined或者null。


网站公告

今日签到

点亮在社区的每一天
去签到