TypeScript面试题汇总

这篇具有很好参考价值的文章主要介绍了TypeScript面试题汇总。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、面试官:说说你对 TypeScript 的理解?与 JavaScript 的区别?

Typescript 是 JavaScript 的超集,可以被编译成 JavaScript 代码。 用 JavaScript 编写的合法代码,在 TypeScript 中依然有效。它给JavaScript添加了可选的静态类型和基于类的面向对象编程,如类、接口、继承、泛型等。
TypeScript 的特性主要有如下:
1、类型批注:通过类型批注提供在编译时启动类型检查的静态类型
2、类型推断:ts 中没有批注变量类型会自动推断变量的类型
3、类型擦除:在编译过程中批注的内容和接口会在运行时利用工具擦除
4、接口:ts 中用接口来定义对象类型
5、枚举:用于取值被限定在一定范围内的场景
6、Mixin:可以接受任意类型的值
7、泛型:写代码时使用一些之后才指定的类型
8、命名空间:名字只在该区域内有效,其他区域可重复使用该名字而不冲突
9、元组:元组合并了不同类型的对象,相当于一个可以装不同类型数据的数组

与 JavaScript 的区别:
1、TS 是一种面向对象编程语言,而 JS 是一种脚本语言(尽管 JS 是基于对象的)。
2、TS 支持可选参数, JS 则不支持该特性。
3、TS 支持静态类型,JS 不支持。
4、TS 支持接口,JS 不支持接口。

2、面试官:说说 typescript 的数据类型有哪些?

typescript 和 javascript几乎一样,拥有相同的数据类型,另外在javascript基础上提供了更加实用的类型供开发使用
typescript 的数据类型主要有如下:
1、boolean(布尔类型):let flag:boolean = true;
2、number(数字类型):let num:number = 123;
3、string(字符串类型):let str:string = ‘this is ts’;
4、array(数组类型):let arr:Array = [1, 2];
5、tuple(元组类型)
允许表示一个已知元素数量和类型的数组,let tupleArr:[number, string, boolean];
6、enum(枚举类型):enum Color {Red, Green, Blue}
7、any(任意类型):let num:any = 123;
8、null 和 undefined 类型:let num:number | undefined; // 数值类型 或者 undefined
9、void 类型:用于标识方法返回值的类型,表示该方法没有返回值。
10、never 类型
never是其他类型 (包括null和 undefined)的子类型,可以赋值给任何类型,代表从不会出现的值。但是没有类型是 never 的子类型,这意味着声明 never 的变量只能被 never 类型所赋值。
11、object 对象类型:let obj:object;

3、面试官:说说你对 TypeScript 中枚举类型的理解?应用场景?

枚举是一个被命名的整型常数的集合,用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。
通俗来说,枚举就是一个对象的所有可能取值的集合
就拿回生活的例子,后端返回的字段使用 0 - 6 标记对应的日期,这时候就可以使用枚举可提高代码可读性,如下:

enum Days {Sun, Mon, Tue, Wed, Thu, Fri, Sat};

console.log(Days["Sun"] === 0); // true
console.log(Days["Mon"] === 1); // true
console.log(Days["Tue"] === 2); // true
console.log(Days["Sat"] === 6); // true

4、面试官:说说你对 TypeScript 中接口的理解?应用场景?

接口所描述的是对象相关的属性和方法,但并不提供具体创建此对象实例的方法,只是为对象的类型进行命名。
举例:定义一个接口

interface User {
    name: string
    age: number
}
const getUserName = (user: User) => user.name    //使用接口定义对象参数

5、面试官:说说你对 TypeScript 中类的理解?应用场景?

在 ES6 之后,JavaScript 拥有了 class 关键字,虽然本质依然是构造函数,但是使用起来已经方便了许多。但是JavaScript 的class依然有一些特性还没有加入,比如修饰符和抽象类
TypeScript 的 class 支持面向对象的所有特性,比如 类、接口等
类可以包含以下几个模块(类的数据成员):
1、字段 : 字段是类里面声明的变量。字段表示对象的有关数据。
2、构造函数: 类实例化时调用,可以为类的对象分配内存。
3、方法: 方法为对象要执行的操作

lass Car {					此外类的继承使用过extends的关键字
    // 字段
    engine:string;
    // 构造函数
    constructor(engine:string) {
        this.engine = engine
    }
    // 方法
    disp():void {
        console.log("发动机为 : "+this.engine)
    }
}

6、面试官:说说你对 TypeScript 中函数的理解?与 JavaScript 函数的区别?

TypeScript 为 JavaScript 函数添加了额外的功能,丰富了更多的应用场景
1、从定义的方式而言,typescript 声明函数需要定义参数类型或者声明返回值类型
2、typescript 在参数中,添加可选参数供使用者选择
3、typescript 增添函数重载功能,使用者只需要通过查看函数声明的方式,即可知道函数传递的参数个数以及类型
函数重载:允许创建数项名称相同但输入输出类型或个数不同的子程序,它可以简单地称为一个单独功能可以执行多项任务的能力
关于typescript函数重载,必须要把精确的定义放在前面,最后函数实现时,需要使用 |操作符或者?操作符,把所有可能的输入类型全部包含进去,用于具体实现

7、面试官:说说你对 TypeScript 中泛型的理解?应用场景?

泛型允许我们在强类型程序设计语言中编写代码时使用一些以后才指定的类型
假设我们用一个函数,它可接受一个 number 参数并返回一个number 参数,又打算接受一个 string 类型,然后再返回 string类型,代码重复度就比较高,这种情况就可以使用泛型
function returnItem(para: T): T {
return para
}
后述在编写 typescript 的时候,定义函数,接口或者类的时候,不预先定义好具体的类型,而在使用的时候在指定类型的一种特性的时候,这种情况下就可以使用泛型

8、面试官:说说你对 TypeScript 中高级类型的理解?有哪些?

除了string、number、boolean 这种基础类型外,在 typescript 类型声明中还存在一些高级的类型应用
常见的高级类型有如下:
1、交叉类型:通过 & 将多个类型合并为一个类型,本质上是一种并的操作
2、联合类型:联合类型的语法规则和逻辑 “或” 的符号一致 T | U
3、类型别名:类型别名会给一个类型起个新名字
4、类型索引:keyof用于获取一个接口中 Key 的联合类型
5、类型约束:通过关键字 extend 进行约束,泛型内使用的主要作用是对泛型加以约束
6、条件类型:条件类型的语法规则和三元表达式一致,经常用于一些类型不确定的情况。

9、面试官:说说你对 TypeScript 装饰器的理解?应用场景?

装饰器是一种特殊类型的声明,它能够被附加到类声明,方法, 访问符,属性或参数上
是一种在不改变原类和使用继承的情况下,动态地扩展对象功能
本质也不是什么高大上的结构,就是一个普通的函数,@expression 的形式其实是Object.defineProperty的语法糖
使用装饰器存在两个显著的优点:
1、代码可读性变强了,装饰器命名相当于一个注释
2、在不改变原有代码情况下,对原来功能进行扩展

10、说说对 TypeScript 中命名空间与模块的理解?区别?

1、模块
TypeScript 与ECMAScript 2015 一样,任何包含顶级 import 或者 export 的文件都被当成一个模块。相反地,如果一个文件不带有顶级的import或者export声明,那么它的内容被视为全局可见的。
2、命名空间
命名空间一个最明确的目的就是解决重名问题
命名空间定义了标识符的可见范围,一个标识符可在多个名字空间中定义,它在不同名字空间中的含义是互不相干的

TypeScript 中命名空间使用 namespace 来定义
namespace SomeNameSpaceName {
   export interface ISomeInterfaceName {      }
   export class SomeClassName {      }
}

以上定义了一个命名空间 SomeNameSpaceName,如果我们需要在外部可以调用 SomeNameSpaceName 中的类和接口,则需要在类和接口添加 export 关键字文章来源地址https://www.toymoban.com/news/detail-585271.html

到了这里,关于TypeScript面试题汇总的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 面试题-TS(一):TypeScript是什么?它与JavaScript有什么区别?

    面试题-TS(一):TypeScript是什么?它与JavaScript有什么区别? TypeScript是一种编程语言,它是JavaScript的超集。它通过添加静态类型、类、接口和模块等功能来扩展JavaScript。 JavaScript是一种广泛应用于Web开发的脚本语言,它的灵活性和易用性使得它成为了开发者们的首选。然而,Jav

    2024年02月15日
    浏览(50)
  • 服务端使用ASP.NET Core SignalR与Vue3(TypeScript与JavaScript)前端建立通信(以进度条为例)

    1. ASP.NET Core           ASP.NET Core 是一个跨平台、高性能及开源的框架,用于生成基于云且连接互联网的新式应用程式。 官方文档:ASP.NET documentation | Microsoft Learn  2.  ASP.NET Core SignalR         ASP.NET Core SignalR 是开源库,用于服务端与客户端建立实时通信,可以自动管理连接

    2024年02月06日
    浏览(48)
  • 前端2023最全面试题(javaScript、typeScript、vue2、vue3、html、css、uniapp、webpack、vite、react)

    答案:JavaScript中的闭包是一种函数,它有权访问其词法环境的变量和其它函数。这意味着,即使其包含它的函数已经执行完毕,其词法环境仍然存在,因此可以访问其作用域内的变量。 答案:回调函数是在某个特定事件之后执行的函数。在JavaScript中,通常使用回调函数来处

    2024年02月06日
    浏览(65)
  • TypeScript入门学习汇总

    TypeScript 是 JavaScript 的一个超集,支持 ECMAScript 6 标准。 TypeScript 由微软开发的自由和开源的编程语言。 TypeScript 设计目标是开发大型应用,它可以编译成纯 JavaScript,编译出来的 JavaScript 可以运行在任何浏览器上。 TypeScript 是一种给 JavaScript 添加特性的语言扩展,新增的功能

    2024年02月15日
    浏览(39)
  • TypeScript与JavaScript

    博主作品: 《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+MySQL+Vue等前后端分离项目,可以在左边的分类专栏找到更多项目。《Uniapp项目案例》有几个有uniapp教程,企业实战开发。《微服务实战》专栏是本人的实战经验总结,《Spring家族及微服务系列》专注Spring、SpringMV

    2024年02月05日
    浏览(45)
  • 单例模式——javascript和typescript

    确保某个方法或者类只有一个是咧。而且自行实例子并向整个系统提供这个实例。 某个方法或类只能一个; 必须自行创建这个实例 必须自行向整个系统提供这个实例。

    2024年02月05日
    浏览(51)
  • 一文了解JavaScript 与 TypeScript的区别

    TypeScript 和 JavaScript 是两种互补的技术,共同推动前端和后端开发。在本文中,我们将带您快速了解JavaScript 与 TypeScript的区别。   一、TypeScript 和 JavaScript 之间的区别 JavaScript 和 TypeScript 看起来非常相似,但有一个重要的区别。 JavaScript 和 TypeScript 之间的主要区别在于 JavaS

    2024年02月14日
    浏览(51)
  • React框架:TypeScript支持的JavaScript库

    React 框架是一个功能强大的 JavaScript 库,让用户可以轻松地构建高度动态的用户界面。它借助虚拟 DOM 的思想实现高效的性能,并具有易于使用和灵活的编程接口。随着越来越多的人开始使用 React ,在不断的发展和变化中, React 框架现在加入了 TypeScript 的支持,使其成为一个

    2024年02月11日
    浏览(66)
  • TypeScript是什么?它与JavaScript有什么区别?

    面试题-TS(1):TypeScript是什么?它与JavaScript有什么区别? TypeScript是一种编程语言,它是JavaScript的超集。它通过添加静态类型、类、接口和模块等功能来扩展JavaScript。 JavaScript是一种广泛应用于Web开发的脚本语言,它的灵活性和易用性使得它成为了开发者们的首选。然而,JavaS

    2024年02月16日
    浏览(48)
  • TypeScript:为什么JavaScript需要类型检查?

    JavaScript是当今最为流行的编程语言之一。它是一种高级的、解释性的编程语言,用于Web应用程序的开发。然而,JavaScript的灵活性也是它的弱点之一。JavaScript中的变量、函数、类等都是动态类型,这意味着它们的类型可以在运行时发生变化。虽然这种灵活性为JavaScript开发人员

    2024年02月04日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包