看了涡流大佬的面试文章的总结(Typescript)

简介: 看了涡流大佬的面试文章的总结(Typescript)

Typescript相较于JavaScript有什么优势和劣势?


  • ts可以在写代码的时候给予很好的提示。


  • 静态类型化是一种功能,可以在开发人员编写脚本时检测错误,有了这项功能,就会允许开发人员编写更健壮的代码并对其进行维护,以便使得代码质量更好、更清晰。


  • ts引入了类中属性和方法的权限,可以实现对类的封装。


  • ts运行时,只能先编译成js,才能在浏览器或者node上运行。


  • ts不灵活。这一点也是他的优点吧。


const func = (a, b) => a + b; 要求编写Typescript,要求a,b参数类型一致,都为number或者都为string


  • 如何保证a, b类型相同,就需要使用泛型。


  • 如果返回不同类型的值。使用类型保护


function func<T>(a: T, b: T) {
      if (typeof a === 'string' && typeof b === 'string') {
        return `${a}${b}`
      } else if (typeof a === 'number' && typeof b === 'number') {
        return a + b
      }
    }


实现ReturnType


type MyReturnType<T extends (...arg: any) => any> = T extends (
      ...arg: any
    ) => infer RT
      ? RT
      : never


infer RT 代表待推断的返回值类型,如果 T 是一个函数(...args: any[]) => infer RT,则返回函数的返回值 RT,否则返回neverinfer关键字,解释


实现DeepReadOnly


先来实现浅层只读吧


type ShallowReadOnly<T> = {
  // 只有在泛型中才可以使用extends
  readonly [key in keyof T]: T[key]
}


其实深度只读,就是判断T[key]是否是object类型。


type DeepReadonly<T> = {
      readonly [key in keyof T]: T[key] extends object
        ? DeepReadonly<T[key]>
        : T[key]
    }


基于已有类型生成新类型:剔除类型中的width属性


interface A {
  content: string;
  width: number;
  height: number;
}


这里的keyof语法是获取接口键名的类型。如果是key是string类型,那么接收的类型可以是string或者number类型


你可以看一下这篇文章


相关文章
|
6月前
|
人工智能 JavaScript 编译器
【利用AI刷面试题】AI:十道不常见的TypeScript面试题(二)
【利用AI刷面试题】AI:十道不常见的TypeScript面试题
|
6月前
|
设计模式 前端开发 JavaScript
当面试官问你什么是观察者模式的时候,用这篇文章去回答他!
当面试官问你什么是观察者模式的时候,用这篇文章去回答他!
|
2月前
|
存储 负载均衡 Java
Elasticsearch集群面试系列文章一
【9月更文挑战第9天】Elasticsearch(简称ES)是一种基于Lucene构建的分布式搜索和分析引擎,广泛用于全文搜索、结构化搜索、分析以及日志实时分析等场景。
107 7
|
5月前
|
存储 调度 C++
【操作系统】进程与线程的区别及总结(非常非常重要,面试必考题,其它文章可以不看,但这篇文章最后的总结你必须要看,满满的全是干货......)
【操作系统】进程与线程的区别及总结(非常非常重要,面试必考题,其它文章可以不看,但这篇文章最后的总结你必须要看,满满的全是干货......)
123 1
|
6月前
|
机器学习/深度学习 人工智能 安全
常见人力面试题辅助文章(爱好、崇拜者、座右铭、缺点)
常见人力面试题辅助文章(爱好、崇拜者、座右铭、缺点)
72 1
|
6月前
|
JavaScript 前端开发 安全
一篇文章搞懂TypeScript
TypeScript 是 JavaScript 的超集,一方面给动态类型的 js 增加了类型校验,另一方面扩展了 js 的各种功能。
112 0
|
6月前
|
JavaScript 前端开发 安全
【面试题】 TypeScript 前端面试题 由浅到深(二)
【面试题】 TypeScript 前端面试题 由浅到深(二)
|
6月前
|
JavaScript 前端开发
【面试题】 面试官:说说你对 TypeScript 中枚举类型的理解?应用场景?
【面试题】 面试官:说说你对 TypeScript 中枚举类型的理解?应用场景?
|
6月前
|
SQL 数据挖掘 数据处理
「SQL面试题库」 No_69 文章浏览 II
「SQL面试题库」 No_69 文章浏览 II
|
6月前
|
SQL 数据挖掘 数据处理
「SQL面试题库」 No_68 文章浏览 I
「SQL面试题库」 No_68 文章浏览 I