ts面试总结题

简介: ts面试总结题

什么是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 拥有相同的属性,但是所有属性皆为必选项

相关文章
|
7月前
|
JavaScript 前端开发 API
第9期 一文读懂TS的(.d.ts)文件
第9期 一文读懂TS的(.d.ts)文件
154 0
|
JavaScript 前端开发 API
一文读懂TS的(.d.ts)文件
一文读懂TS的(.d.ts)文件
4047 0
|
3月前
|
JavaScript 前端开发 程序员
ts学习(1)
ts学习(1)
139 69
|
7月前
ts笔记
ts笔记
|
JavaScript 前端开发 开发者
ts详解以及相关例子(一篇带你详细了解ts)
ts详解以及相关例子(一篇带你详细了解ts)
178 1
|
7月前
|
JavaScript 前端开发 编译器
ts面试题总结
ts面试题总结
132 0
|
7月前
|
JavaScript
使用TS的一些基础知识
使用TS的一些基础知识
88 0
|
JavaScript 前端开发 开发者
ts知识点
ts知识点
60 0
|
JavaScript 安全 Python
TS笔记
TS笔记
68 0
|
JavaScript 前端开发 开发工具
CocosCreator 面试题(五)TS有什么优缺点?为什么要用TS?
CocosCreator 面试题(五)TS有什么优缺点?为什么要用TS?
204 0