ts面试总结题

news/2024/11/16 2:54:43/

什么是TypeScript?

TypeScript 是一门静态类型、弱类型的语言

TypeScript和JavaScript有什么不同?

TypeScript 是 JavaScript 的超集,扩展了 JavaScript 的语法,因此现有的 JavaScript 代码可与 TypeScript 一起工作无需任何修改,TypeScript 通过类型注解提供编译时的静态类型检查。

TypeScript 可处理已有的 JavaScript 代码,并只对其中的 TypeScript 代码进行编译。

列出使用Typescript的一些优点?

(1)增强代码的可读性和可维护性,强类型的系统相当于最好的文档,在编译时即可发现大部分的错误,增强编辑器的功能。

(2)包容性,js文件可以直接改成 ts 文件,不定义类型可自动推论类型,可以定义几乎一切类型,ts 编译报错时也可以生成 js 文件,兼容第三方库,即使不是用ts编写的

(3)有活跃的社区,大多数的第三方库都可提供给 ts 的类型定义文件,完全支持 es6 规范

列出在Typescript中的内置类型

1:Partial

作用:生成一个新类型,该类型与 T 拥有相同的属性,但是所有属性皆为可选项,但只支持处理 第一层的属性 

2:Required

作用:生成一个新类型,该类型与 T 拥有相同的属性,但是所有属性皆为必选项 

3:Readonly

作用:将某个类型所有属性变为只读属性,也就意味着这些属性不能被重新赋值 

4:Pick

作用:某个类型中挑出一些属性出来 

5:Record

作用:是将 K 中所有的属性的值转化为 T 类型 

6:ReturnType

作用:获得函数返回值的类型 

7:Exclude

作用:将某个类型中属于另一个的类型移除掉 

8:Extract

作用:作用是从 T 中提取出 U 。 

9:Omit

作用:生成一个新类型,该类型拥有 T 中除了 K 属性以外的所有属性 

10:NonNullable

作用:用来过滤类型中的 null 及 undefined 类型。

如何编译Typescript文件?

1:手动编译

2:设置自动编译

3:解析编译

4:动态编译

TS的接口是什么意思

提供一个可以继承的,其他变量可以选择使用的范式

type 和 interface的异同

1:type和interface的相同点:都是用来定义对象或函数的形状

2:type可以声明基本类型别名、联合类型、元组等类型

3:type语句中可以使用typeof获取实例的类型进行赋值

4:interface支持同时声明,默认导出

5:interface可以重复声明,最终会合并在一起,type只能声明一次

什么是泛型, 泛型的具体使用?

泛型:是一种未知的数据类型,但我们不知道使用什么数据类型的时候,可以使用泛型。泛型也可以看作是一个变量,用来接收数据类型

什么是any类型,何时使用?

any 是任意值类型,定义为 any 类型的变量允许被赋值为任意类型。

定义变量时,变量的数据来源于接口,而接口数量多,定义起来稍显繁杂,所以不进行定义,使用any;

 由于变量定义为any,使用该变量进行处理时,也只能使用any

说说数组在TypeScript中是如何工作的?

  1. 第一种方式:类型 + []表示法
  2. 第二种方式:接口
  3. 第三种方式:any

什么是void,什么时候使用void类型?

void 意思就是“无类型”,而void *表示“无类型指针”,可以指向任何类型的数据。

  • 对函数返回的限定。 
  • 对函数参数的限定。 

never 和 void 的区别?

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

TypeScript中的类型断言是什么?

TypeScript 允许覆盖它的推断,并且能以任何想要的方式分析它,这种机制被称为「类型断言」

TypeScript 中的“as”语法是什么?

as关键字表示断言

在Typescript中,表示断言有两种方式。一种是扩号表示法:

另一种使用as关键字:

TypeScript中的枚举是什么?

枚举是一个被命名的整型常数的集合,用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型

通俗来说,枚举就是一个对象的所有可能取值的集合

any 和unknown 有何区别?

unknown和any都是TS中的顶级类型,但主要区别在于:使用any相当于彻底放弃了类型检查,而unknown类型相较于any更加严格,在执行大多数操作之前,会进行某种形式的检查。

什么是交叉类型?

交叉类型是将多个类型合并为一个类型。 这让我们可以把现有的多种类型叠加到一起成为一种类型,它包含了所需的所有类型的特性

什么是函数重载?作用是什么?

重载:就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者重载方法。

  作用:重载的最直接作用是方便了程序员可以根据不同的参数个数,顺序,类型,自动匹配方法,减少写过个函数名或方法名的重复步骤。

const和readonly的区别

const是静态常量,const是编译时常量;readonly是动态常量,是运行时常量,const较高效,readonly较灵活。  

什么是字面量类型?

字面量也就是 JavaScript 基元类型具体的值。而在 TypeScript 中,我们可以将字面量作为一种自定义的类型,这种类型被称为字面量类型。

函数形状有几种定义方式?

用接口定义函数的形状

可以保证以后对函数名赋值时保证参数个数、参数类型、返回值类型不变

什么是元组?

列表是可以修改的数据结构,而元组是固定长度,不能被修改元素值的数据结构。

元组是使用圆括号()表示,而列表是使用方括号[]。请注意两者的区别

什么是泛型约束?

泛型约束是指对泛型类型参数施加限制,用于限制可以传递到该类型参数的类型种类。

操作符keyof的作用是什么?

对一个对象类型使用 keyof 操作符,会返回该对象属性名组成的一个字符串或者数字字面量的联合类型

操作符infer的作用是什么?

infer的作用是让TypeScript自己推断,并将推断的结果存储到一个类型变量中,infer只能用于extends语句中。

操作符extends的作用是什么?

  •   表示继承/拓展
  •   表示约束
  •   表示分配

请写出内置工具Readonly的源码形状并说明其作用

type Readonly<T> = {

readonly [p in keyof T]: T[P]

}

作用:将某个类型所有属性变为只读属性,也就意味着这些属性不能被重新赋值

请写出内置工具Required的源码形状并说明其作用

type Require<T> = { 

[p in keyof T]-?: T[P] 

作用:生成一个新类型,该类型与 T 拥有相同的属性,但是所有属性皆为必选项


http://www.ppmy.cn/news/163465.html

相关文章

Java程序设计入门教程--for语句

for语句 格式 for ( 表达式1&#xff1b;表达式2&#xff1b;表达式3 ) 循环体&#xff1b; for语句结构说明 表达式1&#xff1a;通常是初始化表达式&#xff0c;用来设定循环变量的初始值&#xff0c;也就是循环计数的起点&#xff1b; 表达式2&#xff1a;是判断表达式&am…

通过继承WebMvcConfigurationSupport配置静态资源映射不生效的问题

原始写法如下 Configuration Slf4j public class WebConf extends WebMvcConfigurationSupport {Value("${ees.static.path}")private String staticPath;Value("${ees.swagger.enable}")private Boolean swaggerEnable;Overrideprotected void addResour…

IBM Storwize V3700 无法打开 Web 管理页面的问题解决

IBM Storwize V3700 的存储中提供 Web 服务的是 tomcat &#xff0c;页面无法正常打开&#xff0c;有可能是 Web 服务宕掉了&#xff0c;所以只需要把这个服务重启一下就好了。 ssh 接入 V3700 &#xff0c;然后 satask restartservice -service tomcat

IBM v3700存储加光纤子卡

存储的两个控制器加完光纤子卡后&#xff0c;登录管理界面&#xff0c;新建FC主机的时候没有FC主机的选项&#xff0c;控制光纤模块没有红光出来。 解决方法&#xff1a;到监控 -> 事件里面&#xff0c;点击RUN FIX&#xff0c;根据提示下一步下一步即可&#xff08;控制器…

IBM V3700/V5000/V7000存储配置步骤

工具/原料 笔记本 网线 方法/步骤 1. 系统初始化&#xff08;新买的存储需要初始化&#xff09;&#xff0c;默认出厂A控和B控ip地址为 192.168.70.121/24和192.168.70.122/24&#xff0c;首先给笔记本配置192.168.70.99&#xff0c;然后拿一根网线把笔记本和存储连起来。 2.…

5800X + RTX3070 装机 AN混搭

目录 前言配置评测主板刷BIOS, 超频, XMP, 虚拟化启用装Win10冷启动掉盘CPU闲扯主板搭配显卡吐槽PCIe 4.0 SSDWiFi6微信公众号 前言 业余装机户今年动手装了不少台式机, 鉴于最近AN(AMDNvidia)混搭装机的小伙伴越来越多, 这里也记录下前不久的一次装机经历. 配置 类别型号厂…

V3700系列存储数据恢复成功过程

存储故障过程描述 本次数据恢复的设备为某品牌V3700系列存储&#xff0c;故障涉及的硬盘共10块4T的硬盘&#xff0c;查看客户所给的相关信息&#xff0c;了解到共有2组Mdisk&#xff0c;加入到一个存储池中&#xff0c;其中创建了一个通用卷来存放数据。据客户描述&#xff0c…

博科zone命令配置方式

Brocade博科光纤交换机zone配置 转载自&#xff1a;https://www.cnblogs.com/xshrim/p/5724707.html 1、规划 交换机端口用途v3700-A94存储模块1-195存储模块2-168DB1网卡1-169DB2网卡1-1v3700-B94存储模块1-295存储模块2-268DB1网卡1-269DB2网卡1-2 2、登陆交换机&#xff…