TypeScript常见面试题第一节

题目一:是否了解TypeScript?TypeScript比JavaScript 有哪些优势?

一、讲解视频

  1. CSDN视频:

    TS面试题一:介绍TS及TS的优势?

  2. B站视频:

    TS面试题一:介绍TS及TS的优势?

二、题目解析

  此问题是一个基础问题,主要考察对ts及js的基本认识,可通过ts和js的基本介绍查看对应的区别:

  1. js基本介绍:

JavaScript 是世界上最流行的脚本语言。 JavaScript 是属于 web 的语言,它适用于 PC、笔记本电脑、平板电脑和移动电话。 JavaScript 被设计为向 HTML 页面增加交互性。 许多 HTML 开发者都不是程序员,但是 JavaScript 却拥有非常简单的语法。几乎每个人都有能力将小的 JavaScript 片段添加到网页中。

  1. ts基本介绍:

TypeScript是由微软开发的自由和开源的编程语言。
TypeScript是JavaScript的一个超集,从今天数以百万计的JavaScript开发者所熟悉的语法和语义开始。可以使用现有的JavaScript代码,包括流行的JavaScript库,并从JavaScript代码中调用TypeScript代码。
TypeScript可以编译出纯净、 简洁的JavaScript代码,并且可以运行在任何浏览器上、Node.js环境中和任何支持ECMAScript 3(或更高版本)的JavaScript引擎中。
TypeScript的优势在于:它有更多的规则和类型限制,代码具有更高的预测性、可控性,易于维护和调试;对模块、命名空间和面向对象的支持,更容易组织代码开发大型复杂程序。
另外,TypeScript的编译步骤可以捕获运行之前的错误。

三、参考资料

  1. TS官网
    https://www.tslang.cn/index.html
  2. JS官网
    https://www.javascript.com/

四、参考答案

  1. TypeScript 是 JavaScript 的静态类型超集,可以编译为纯 JavaScript。通过引入静态类型,它允许开发人员在编译时而不是运行时捕获与类型相关的错误。 这可以减少错误,提高代码可读性,并通过增强的工具(例如自动完成和代码导航)提供更高效的开发体验。
  2. TypeScript可以在任何浏览器、主机和操作系统上执行。TypeScript不是直接在浏览器上运行的。它需要一个编译器来编译和生成JavaScript文件。TypeScript是带有一些附加特性的ES6 JavaScript版本。
  3. TypeScript 是 JavaScript 的静态类型扩展,它可以编译成标准的 JavaScript 代码。通过添加类型信息,TypeScript 在编译时而非运行时捕获错误,这有助于提高代码质量和可维护性。此外,TypeScript 还提供了一些额外的功能,如自动完成和代码导航,以提升开发效率。

题目二:TypeScript的优点?

一、讲解视频

  1. CSDN视频:

    TS面试题二:TypeScript的优点?

  2. B站视频:

    TS面试题二:TypeScript的优点?

二、题目解析

  考察对 ts 的基本认识,和第一个题目类似,主要考察对 js、ts 等内容综合性认识。

三、参考资料

  https://www.w3cschool.cn/typescript/typescript-tutorial.html

四、参考答案

  1. TypeScript 提供了可选静态类型,提供了可以添加到变量、函数、属性等的类型。
  2. TypeScript可以编译出纯净、 简洁的JavaScript代码,并且可以运行在任何浏览器上、Node.js环境中和任何支持ECMAScript 3。
  3. TypeScript有更多的规则和类型限制,代码具有更高的预测性、可控性,易于维护和调试;对模块、命名空间和面向对象的支持,更容易组织代码开发大型复杂程序。
  4. TypeScript的编译步骤可以捕获运行之前的错误。
  5. TypeScript支持在 js 中不支持的强类型或静态类型。
  6. TypeScript有助于代码结构,能使用基于类的面向对象编程。
  7. TypeScript提供了类型检测,所以可以使用工具支持和智能感知,可在编辑代码时提供智能提示。
  8. TypeScript通过定义模块来定义命名空间概念。

题目三:TypeScript的缺点?

一、讲解视频

  1. CSDN视频:

    TS面试题三:TypeScript的缺点?

  2. B站视频:

    TS面试题三:TypeScript的缺点?

二、题目解析

  考察对 ts 的基本认识,和第一个题目类似,主要考察对 js、ts 等内容综合性认识。

三、参考资料

  https://www.w3cschool.cn/typescript/typescript-tutorial.html

四、参考答案

  1. 由于需要将TypeScript 编译为 JavaScript,所以项目编译时需要很长时间来编译代码.
  2. 无法直接运行,需要将 TypeScript 代码编译为 JavaScript 代码才可以运行。
  3. TypeScript 中要使用任何第三方库时,都必须要使用声明文件,通过声明文件调用第三方库的内容,若第三方库没有编写声明文件,则无法调用。
  4. 类型定义较复杂,习惯了 js 开发后,开发 ts 会感觉有很大的限制,每个地方都要确定具体的类型。

题目四:什么是 any 类型,何时使用 ?

一、讲解视频

  1. CSDN视频:

    TS面试题四:什么是 any 类型,何时使用 ?

  2. B站视频:

    TS面试题四:什么是 any 类型,何时使用 ?

二、题目解析

  考查对 any 类型的掌握及基本用法,解释如下:

  有时候,我们会想要为那些在编程阶段还不清楚类型的变量指定一个类型。 这些值可能来自于动态的内容,比如来自用户输入或第三方代码库。 这种情况下,我们不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查。 那么我们可以使用 any类型来标记这些变量:

let notSure: any = 4;
notSure = “maybe a string instead”;
notSure = false; // okay, definitely a boolean`

  在对现有代码进行改写的时候,any类型是十分有用的,它允许你在编译时可选择地包含或移除类型检查。 你可能认为 Object有相似的作用,就像它在其它语言中那样。 但是 Object类型的变量只是允许你给它赋任意值 - 但是却不能够在它上面调用任意的方法,即便它真的有这些方法:

let notSure: any = 4;
notSure.ifItExists(); // okay, ifItExists might exist at runtime
notSure.toFixed(); // okay, toFixed exists (but the compiler doesn’t check)

let prettySure: Object = 4;
prettySure.toFixed(); // Error: Property ‘toFixed’ doesn’t exist on type ‘Object’.

  当你只知道一部分数据的类型时,any类型也是有用的。 比如,你有一个数组,它包含了不同的类型的数据:
let list: any[] = [1, true, “free”];
list[1] = 100;

三、参考资料

  https://www.tslang.cn/docs/handbook/basic-types.html

四、参考答案

  1. 有时候,我们会想要为那些在编程阶段还不清楚类型的变量指定一个类型。 这些值可能来自于动态的内容,比如来自用户输入或第三方代码库。 这种情况下,我们不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查。 那么我们可以使用 any类型来标记这些变量。
  2. 改写已有项目,想要绕开 ts 编译时的类型检查,可使用 any 指定。

题目五:TypeScript 中的any和unknown有何不同?

一、讲解视频

  1. CSDN视频:

    TS面试题五:any和unknown有何不同?

  2. B站视频:

    TS面试题五:any和unknown有何不同?

二、题目解析

  主要考察ts中any和unknow类型的基础知识,ts中any和unknown是比较特殊的类型,都能代表任意类型,但是具体的使用及含义上还是有区别,一下是any及unknown的介绍:

  1. any介绍:

 有时候,我们会想要为那些在编程阶段还不清楚类型的变量指定一个类型。 这些值可能来自于动态的内容,比如来自用户输入或第三方代码库。 这种情况下,我们不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查。 那么我们可以使用 any类型来标记这些变量:
let notSure: any = 4;
notSure = “maybe a string instead”;
notSure = false; // okay, definitely a boolean

  在对现有代码进行改写的时候,any类型是十分有用的,它允许你在编译时可选择地包含或移除类型检查。 你可能认为 Object有相似的作用,就像它在其它语言中那样。 但是 Object类型的变量只是允许你给它赋任意值 - 但是却不能够在它上面调用任意的方法,即便它真的有这些方法:
let notSure: any = 4;
notSure.ifItExists(); // okay, ifItExists might exist at runtime
notSure.toFixed(); // okay, toFixed exists (but the compiler doesn’t check)
let prettySure: Object = 4;
prettySure.toFixed(); // Error: Property ‘toFixed’ doesn’t exist on type ‘Object’.

  当你只知道一部分数据的类型时,any类型也是有用的。 比如,你有一个数组,它包含了不同的类型的数据:
let list: any[] = [1, true, “free”];
list[1] = 100;

  1. unknow介绍:

TypeScript 3.0引入了一个顶级的unknown类型。 对照于any,unknown是类型安全的。 任何值都可以赋给unknown,但是当没有类型断言或基于控制流的类型细化时unknown不可以赋值给其它类型,除了它自己和any外。 同样地,在unknown没有被断言或细化到一个确切类型之前,是不允许在其上进行任何操作的。

三、参考资料

  https://www.tslang.cn/docs/handbook/basic-types.html
  https://www.tslang.cn/docs/release-notes/typescript-3.0.html

四、参考答案

  1. 相同点:any 和unknown 都代表 了TypeScript 中的任何值。
  2. 两者的区别:
    a. unknown 类型会更加严格。
    b. any 绕过了编译器的类型检查,本质上关闭了 TypeScript 对变量类型的约束。
    c. unknown 保持类型检查完整,在对变量执行操作之前断言或缩小变量的类型之后才能进行使用。
    d. 可以对any类型进行任何操作,不需要类型检查,就像js一样,此时类型没有意义。
    e. 可以将任意值付给unknown类型,但是不能调用其属性和方法,如果需要调用对应的属性和方法,则需要确认其具体的类型,可以使用类型断言或者类型保护确定具体的类型。
    f. 联合类型中使用了unknown,则最终得到的类型都是unknown,除了 any 类型之外。
    g. 交叉类型中,由于每种类型都可以赋值给 unknown 类型,所以在交叉类型中包含 unknown 不会改变结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/725268.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于Spark中OptimizeShuffleWithLocalRead 中自己的一些理解

背景 本文基于 Spark 3.5 关于ShuffleLocalRead的作用简单的来说,就是会按照一定的规则,从一个 map Task 中连续读取多个 reduce数据 的任务,(正常的情况下是读取所有map Task中特定的一个reduce数据任务)&#xff0c…

Effective C++ 学习笔记 条款13 以对象管理资源

假设我们使用一个用来塑模投资行为(如股票、债券等等)的程序库,其中各式各样的投资类型继承自一个root class Investment: class Investment { /* ... */ }; // “投资类型”继承体系中的root class进一步假设,这个…

机器视觉 /从bottle.hdev示例程序开启HalconHDevelop征程

文章目录 概述示例程序bottle.hdev源码Step 0: PreparationsStep 1: Segmentation - 读取并显示图片Step 1: Segmentation - 创建并设置OCR模型Step 1: Segmentation - 文本分割与识别计算结果显示内存释放 导出为C代码导出为C代码配置 VS Halcon 环境VS程序执行结果HTuple hv…

LeetCode刷题---填充每个节点的下一个右侧节点指针

官方题解:LeetCode官方题解 解题思想: 因为是一棵满二叉树,所以除了叶子节点外的其他节点都有两个子节点。 可以根据每一层来依次遍历 从根节点开始,根节点的左子节点的next节点就指向根节点的右子节点 因为根节点的next节点为NULL,开始从根…

centOS7操作系统安装说明

一、安装前准备 在安装CentOS 7之前,确保你已经下载了CentOS 7的ISO镜像文件。你可以从CentOS官网下载:The CentOS Project 1. 安装环境准备 确保你的计算机满足CentOS 7的最低系统要求。CentOS 7支持的最低系统要求如下: x86-64或x86架构…

DR模式下LVS负载均衡聚集部署实验

目录 1、实验准备 2、配置负载调度器(ens33:192.168.80.9 VIP:192.168.80.188) 2.1 配置虚拟ip地址(VIP:192.168.80.188) 2.2 调整proc响应参数 2.3 设置负载分配策略 3、部署共享存储(NF…

LeetCode1394. Find Lucky Integer in an Array

文章目录 一、题目二、题解 一、题目 Given an array of integers arr, a lucky integer is an integer that has a frequency in the array equal to its value. Return the largest lucky integer in the array. If there is no lucky integer return -1. Example 1: Inp…

【算法可视化】搜索算法专题

运行平台 Algorithm Visualizer 选数 [NOIP2002 普及组] 选数 // 导入可视化库 { const { Tracer, Array1DTracer, LogTracer, Layout, VerticalLayout } require(algorithm-visualizer); // }const N 4, K 3; //从包含4个元素的集合中选出3个数 let ans 0 //方案数 co…

static详解

前言 大家好我是jiantaoyab,这篇文章来谈一谈c中的static,根据对static的使用,我分为类内和类外2种情况 static简介 static是c常用的修饰符,它用来控制变量的存储方式和可见性,在变量前面加上一个static&#xff0c…

代码随想录算法训练营第五十二天 300.最长递增子序列 、674. 最长连续递增序列 、718. 最长重复子数组

代码随想录算法训练营第五十二天 | 300.最长递增子序列 、674. 最长连续递增序列 、718. 最长重复子数组 300.最长递增子序列 题目链接:300. 最长递增子序列 - 力扣(LeetCode) class Solution {public int lengthOfLIS(int[] nums) {int l…

ECMAScript 语法

ECMAScript 语法 一、ECMAScript1.ECMAScript简介2.ECMAScript历史 二、ECMAScript 语法区分大小写变量是弱类型的每行结尾的分号可有可无注释与 Java、C 和 PHP 语言的注释相同括号表示代码块 一、ECMAScript ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协…

大唐杯学习笔记:Day6

1.1小区选择 一、概述 1.UE在RRC_IDLE和RRC——INACTIVATE状态下进行的过程; 2.UE首先需要完成PLMN的选择,在已选择的PLMN上寻找合适的小区,获取合适的服务,监听控制信道,这个过程即小区选择过程; 3.根据小区重选准则,UE寻找其他更适合的小区进行小区…

论文《Exploring CLIP for Assessing the Look and Feel of Images》阅读

论文《Exploring CLIP for Assessing the Look and Feel of Images》阅读 论文概述Preliminary方法论Experiments结论 论文概述 今天带来的是论文《Exploring CLIP for Assessing the Look and Feel of Images》,论文主要通过 CLIP 模型来完成图像的质量&#xff0…

js五星评价的制作方法

方法有两种&#xff0c;1、jquer插件&#xff1b;2、图片循环&#xff1b; 第一种、效果图 代码 <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"…

装饰器模式详解

8.9.6 装饰器模式 ​ 装饰器模式是一种结构型模式&#xff0c;主要是给一个类添加更多功能&#xff1b; 示例代码&#xff1a; #include <iostream> #include <string>// 抽象基类&#xff1a;文本修饰器 class TextDecorator { public:virtual std::string dec…

软件中级设计师——计算机系统知识

前言 计算机系统知识点&#xff08;第一章&#xff09;。 文章目录 前言一、计算机系统1、CPU2、运算器3、控制器 一、计算机系统 1、CPU 主要由控制器和运算器组成&#xff1b; 控制器 功能 程序控制&#xff1b;操作控制&#xff1b;时间控制&#xff1b; 运算器 功能 数据…

自定义过滤器实现对请求报文统一解密对响应加密

工作中经常会遇到这样的情况,前端(Android或vue等)跟后台通讯时需要对报文做加密和签名处理,但是后端微服务之间调用是明文,这种情况可以考虑通过自定义过滤器的方式实现。 前端在请求头里增加特定字段表示是前端请求,报文是否需要加密,后端自定义过滤器获取请求时根据请…

一文了解 ArrayList 的扩容机制

了解 ArrayList 在 Java 中常用集合类之间的关系如下图所示&#xff1a; 从图中可以看出 ArrayList 是实现了 List 接口&#xff0c;并是一个可扩容数组&#xff08;动态数组&#xff09;&#xff0c;它的内部是基于数组实现的。它的源码定义如下&#xff1a; public class A…

通过hyperbeam创建梁单元截面属性

1、为模型中标准的圆柱形创建梁单元和赋予属性&#xff1b; 2、为模型中不标准的对称性实体创建梁单元和赋予属性&#xff1b; 3、为模型中壳体部分创建梁单元和赋予属性&#xff1b;

Linux系统之rename命令的基本使用

Linux系统之rename命令的基本使用 一、rename命令介绍二、raname工具版本2.1 C语言版本2.2 Perl版本 三、centos下的rename使用3.1 基本语法3.2 命令选项3.3 rename的基本使用 四、ubuntu下的rename使用4.1 基本语法4.2 命令选项4.3 rename命令的基本操作 五、rename注意事项 一…