返回介绍

TypeScript

发布于 2024-09-16 00:13:11 字数 1939 浏览 0 评论 0 收藏 0

TS 优点和缺点,适用场景是什么

优点:

  • 静态类型检查,编译时报错
  • 智能提示,提高开发效率和稳定性

缺点:

  • 有一定学习成本
  • 应用不规范,“anyscript”

适用场景:

  • 大型项目、业务复杂、维护人员多
  • 逻辑性较强的代码,需要类型更稳固

TS 基础类型有哪些

  • boolean
  • number
  • string
  • null
  • undefined
  • symbol
  • 数组 Array
  • 元组 Tuple
  • 枚举 enum
  • interface

any void unknown never 的区别

  • any:不进行类型检查
  • void:函数没有显式返回一个值
  • unknown:未知类型(有类型检查)
  • never:永远不存在的类型

TS 的访问修饰符有哪几个

  • public - 全部可访问
  • private - 只有自己可访问
  • protected - 自己和派生类可访问

TS 私有属性 # 和 private 有什么区别

  • 私有属性,不能在构造函数的参数中定义
  • private 属性,可以通过 as any 强制获取,但私有属性不行

type 和 interface 的区别,以及使用场景

共同点:

  • 都可以描述一个对象结构
  • 都可以被 class 实现
  • 都可以被扩展

不同点:

  • type 可以声明基础类型
  • type 可以使用联合类型(或)、交叉类型(合并)
  • type 可以通过 typeof、keyof 等赋值

TS 中交叉类型和联合类型是什么

交叉类型:

  • 多个类型合并为一个类型 T1 & T2 & T3
  • 如果属性类型冲突了,则属性类型为 never
  • 基础类型无法交叉,会返回 never

联合类型:

  • 联合多个类型 T1 | T2 | T3
  • 一种 “或” 的关系
  • 基础类型可以联合

TS 中有哪些特殊符号,分别是什么意思

  • ?:可选
  • ?.:可选链
  • ??:空值合并运算符
  • !:非空断言操作符
  • _:数字分隔符

TS 常见工具类型有哪些

  • Partial
  • Required
  • Pick<t, k=""></t,>
  • Omit<t, k=""></t,>
  • Readonly

如何扩展 window 属性

// interface 合并声明
declare interface Window {
  test: string;
}

window.test = "xxx";

TS 如何处理第三方模块的类型

  • 常见的第三方插件,都有 @types/xxx 包,安装即可使用
  • 外部模块,可通过 declare module
  • 内部模块,可通过 namespace 命名空间

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文