放肆青春的博客
首页
前端
算法
网络
面试
技术
后端
运维
杂项
数据库
工具
网址
电脑
个人
文章
  • 分类
  • 标签
  • 归档
github (opens new window)
gitee (opens new window)

放肆青春

一个前端菜鸟的技术成长之路
首页
前端
算法
网络
面试
技术
后端
运维
杂项
数据库
工具
网址
电脑
个人
文章
  • 分类
  • 标签
  • 归档
github (opens new window)
gitee (opens new window)
  • 面试网址

    • 面试题前端网址博客
    • 面试题后端网址博客
  • 面试

    • 面试准备及技巧
    • 面试问题集锦
    • 简历

      • 简历技巧
      • 别人简历
  • 面试杂章

    • git 面试题
    • 智力题
  • 前端

    • front

      • front面试题汇总
      • 前端场景题/解决方案
      • 前端高级面试题
      • front面试题及答案
      • 前端开放性面试题
      • 前端笔试题
      • 小程序面试题
      • webpack面试题
      • webpack面试题及答案
      • gulp面试题
    • vue

      • vue面试题汇总
      • vue面试题及答案
      • vue-router面试题
      • vuex面试题
      • vue3面试题
    • js

      • js面试题汇总
      • js面试题及答案
      • js手写面试题
      • typescript
        • typescript
        • typescript 面试题及答案
          • typescript 优缺点
          • 1.typescript 和 javascript 区别
          • any、never、unknown 和 void 区别
          • 2.typescript 你都用过哪些类型
          • 3.typescript 中 type 和 interface 的区别
      • jquery
    • css

      • css面试题汇总
      • css面试题及答案
      • less_sass
    • html

      • html面试题汇总
      • html面试题及答案
    • node

      • node面试题汇总
      • node面试题及答案
      • express
      • egg
      • koa
    • react

      • react
      • react 面试题及答案
    • angular

      • angular
      • angular面试题及答案
  • 网络

    • http

      • 网络面试题
      • 网络面试及答案
  • 算法

    • 算法

      • 算法面试题
  • 数据库

    • 数据库面试题
  • 后端

    • zookeeper
    • nginx
  • 测试

  • interview
放肆青春
2020-07-09

typescript

# typescript

  • typescript 和 javascript 区别

  • typescript 你都用过哪些类型

  • typescript 中 type 和 interface 的区别

  • TypeScript 中 any、never、unknown 和 void 有什么区别?

  • Never 和 void 的区别

  • 讲讲函数重载?

  • Ts 有什么优势

  • typescript 定义一个对象应该如何定义,如果定义对象的 key 必须是字符串,应该如何定义

  • typescript 装饰器有了解么,类装饰器的 this 是如何处理的

  • js 和 ts 混合开发有没有最佳实践

TypeScript 中 const 和 readonly 的区别?枚举和常量枚举的区别?接口和类型别名的区别?

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

TypeScript 中 interface 可以给 Function / Array / Class(Indexable)做声明吗?

TypeScript 中可以使用 String、Number、Boolean、Symbol、Object 等给类型做声明吗?

TypeScript 中的 this 和 JavaScript 中的 this 有什么差异?

TypeScript 中使用 Unions 时有哪些注意事项?

TypeScript 如何设计 Class 的声明?

TypeScript 中如何联合枚举类型的 Key?

TypeScript 中?.、??、!.、_、**等符号的含义?

TypeScript 中预定义的有条件类型有哪些?

简单介绍一下 TypeScript 模块的加载机制?

简单聊聊你对 TypeScript 类型兼容性的理解?抗变、双变、协变和逆变的简单理解?

TypeScript 中对象展开会有什么副作用吗?

TypeScript 中 interface、type、enum 声明有作用域的功能吗?

TypeScript 中同名的 interface 或者同名的 interface 和 class 可以合并吗?

如何使 TypeScript 项目引入并识别编译为 JavaScript 的 npm 库包?

TypeScript 的 tsconfig.json 中有哪些配置项信息?

TypeScript 中如何设置模块导入的路径别名?

有用过 ts 中的 keyof 吗?

ts 的装饰器是怎么实现的?

用 typescript 去描绘异步函数的返回类型

# typescript 面试题及答案

# typescript 优缺点

优点:

  1. TypeScript 增加了代码的可读性和可维护性

(1)类型系统实际上是最好的文档,大部分的函数看看类型的定义就可以知道如何使用了

(2)可以在编译阶段就发现大部分错误,这总比在运行时候出错好

(3)增强了编辑器和 IDE 的功能,包括代码补全、接口提示、跳转到定义、重构等

  1. TypeScript 非常包容

(1)TypeScript 是 JavaScript 的超集,.js 文件可以直接重命名为 .ts 即可

(2)即使不显式的定义类型,也能够自动做出类型推论

(3)可以定义从简单到复杂的几乎一切类型

(4)即使 TypeScript 编译报错,也可以生成 JavaScript 文件

(5)兼容第三方库,即使第三方库不是用 TypeScript 写的,也可以编写单独的类型文件供 TypeScript 读取

  1. TypeScript 拥有活跃的社区

缺点:

  1. 有一定的学习成本,需要理解接口(Interfaces)、泛型(Generics)、类(Classes)、枚举类型(Enums)等前端工程师可能不是很熟悉的概念

  2. 短期可能会增加一些开发成本,毕竟要多写一些类型的定义,不过对于一个需要长期维护的项目,TypeScript 能够减少其维护成本

# 1.typescript 和 javascript 区别

  1. TypeScript 是 JavaScript 的超集,扩展了 JavaScript 的语法,因此现有的 JavaScript 代码可与 TypeScript 一起工作无需任何修改,

  2. TypeScript 通过类型注解提供编译时的静态类型检查。

  3. 后缀不同:TypeScript 文件的后缀名 .ts (.ts,.tsx),JavaScript 文件是 .js

  4. 语言类型不同:TypeScript 是面向对象编程语言,JavaScript 是脚本语言

# any、never、unknown 和 void 区别

  1. 定义

any :用于描述任意类型的变量,不作任何约束,编译时会跳过对其的类型检查

unknown :表示未知类型,即写代码的时候还不知道具体会是怎样的数据类型

never :永不存在的值的类型,常用于表示永不能执行到终点的函数返回值,例如抛出异常或函数中执行无限循环的代码(死循环)的函数返回值类型

void :表示无任何类型,没有类型,例如没有返回值的函数的返回值类型

any 与 unknown 的区别:

(1) unknown 类型会更加严格:在对 unknown 类型的值执行大多数操作之前,我们必须进行断言或守卫

(2) any 类型导致问题太多了,如类型污染,使用不存在的属性或方法而不报错等,而且不不方便后期维护,所以,建议能不用 any 就不用 any,但是如果声明时并不确定具体的类型,则可以使用 unknown 代替,在使用时用类型断言或类型守卫进行类型收缩

never 与 void 的区别:

(1) 用于函数时, never 表示函数用于执行不到返回值那一步(抛出异常或死循环)的返回值类型,即永不存在的值的类型,而 void 则表示没有返回值,不返回或返回 undefined

参考:https://jishuin.proginn.com/p/763bfbd657b8 (opens new window)

# 2.typescript 你都用过哪些类型

# 3.typescript 中 type 和 interface 的区别

在 ts 中,定义类型由两种方式:接口(interface)和类型别名(type alias)

相同点:

  1. 都可以描述一个对象或者函数

区别:

  1. interface 只能定义对象类型,type 声明的方式可以定义组合类型,交叉类型和原始类型

  2. interface 方式可以实现接口的 extends/implements,而 type 不行

  3. interface 可以声明合并,但是 type 不行

更新时间: 2/19/2022, 4:10:36 PM
js手写面试题
jquery

← js手写面试题 jquery→

最近更新
01
前端权限管理
02-24
02
vue2指令
02-24
03
vue2 hook
02-24
更多文章>
Theme by Vdoing | Copyright © 2019-2022 放肆青春
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式