前端押题 TS

179 阅读1分钟

TypeScript

TS 和 JS 的区别是什么?有什么优势?

  • 语法层面:TypeScript = JavaScript + Type(TS 是 JS 的超集)
  • 执行环境层面:浏览器、Node.js 可以直接执行 JS,但不能执行 TS(Deno 可以执行 TS)
  • 编译层面:TS 有编译阶段,JS 没有编译阶段(只有转译阶段和 lint 阶段)
  • 编写层面:TS 更难写一点,但是类型更安全
  • 文档层面:TS 的代码写出来就是文档,IDE 可以完美提示。JS 的提示主要靠 TS

any、unknown、never 的区别是什么?

any V.S. unknown

  • 二者都是顶级类型(top type),任何类型的值都可以赋值给顶级类型变量
  • 但是 unknown 比 any 的类型检查更严格,any 什么检查都不做,unknown 要求先收窄类型
  • 如果改成 any,基本在哪都不报错。所以能用 unknown 就优先用 unknown,类型更安全一点。

never

never 是底类型,表示不应该出现的类型

type 和 interface 的区别是什么?

  • 组合方式:interface 使用 extends 来实现继承,type 使用 & 来实现联合类型。
  • 扩展方式:interface 可以重复声明用来扩展,type 一个类型只能声明一次
  • 范围不同:type 适用于基本类型,interface 一般不行。
  • 命名方式:interface 会创建新的类型名,type 只是创建类型别名,并没有新创建类型。

TS 工具类型 Partial、Required、Readonly、Exclude、Extract、Omit、ReturnType 的作用和实现?

  • Partial 部分类型
  • Required 必填类型
  • Readonly 只读类型
  • Exclude 排除类型
  • Extract 提取类型
  • Pick/Omit 排除 key 类型
  • ReturnType 返回值类型