TS基础面试题

172 阅读2分钟
  1. 请写出你所知道的TS中的数据类型。
  • js中的类型
    • String Number Boolean Null Undefined Symbol
    • Object Function Array
  • ts中的类型
    • enum
    • generic
    • unknown
    • never
    • any
    • void
    • tuple
  1. TS中如何使用类型断言,一般使用在什么场景下,需要注意什么?

开发者清楚数据的类型,但是ts无法理解,可以强制告诉ts编译器,当前数据是什么类型.

场景: 一个变量存在多种类型的可能性,但是实际在传递值的时候可能只有一种.

注意: ts中无法直接把一种类型断言为另外一种类型,中间需要unknown做中转.

  1. never表示什么,unknown表示什么,分别用在什么场景下。

never: 永远不可能出现值 unknown: 有多种可能性,但是具体哪一种不知道

场景: never -> 函数中最终的结果是抛出一个错误,这个时候就可以把函数的返回值标注成never unknown -> 类型断言的时候,需要用unknown做中转

  1. 现有一个JS项目,你该如何把JS项目升级为TS项目,你有什么想法。
  • 将文件的后缀改为ts
  • 把ts文件中的dom操作做上断言等一系列排除错误的操作
  • 创建同名的类型声明文件
  • 在项目中安装typescript
  • 安装vue-tsc
  1. TypeScript在类中支持的类中的修饰符有哪些,分别有什么特点。
  • public 公开的,可以在任何位置使用属性
  • protected 受保护的, 使用了该修饰符的属性或者方法只能在类本身和子类中使用
  • private 私有的, 只能在自身的类中使用
  1. declare关键字有什么作用?
  • 声明js同名的类型文件中定义类型标注
  • vue中声明组件
  1. 请解释一下TS中的枚举。

enum 中的常量在不赋值的情况会自动进行分配值,值从0开始,逐步递增

  1. TS中装饰器有什么作用。

在不修改源代码的情况下可以进行功能的修改和升级。本质来说是一个语法糖。

  1. unknown和any有什么区别。
  2. TS中的泛型有什么作用,请解释。
  • 动态类型标注,将标注的类型决定权给使用者。