Typescript基础面试题 | 02.精选 ts 面试题

在这里插入图片描述

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6
🍨 阿珊和她的猫_CSDN个人主页
🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》
🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入门到实战全面掌握 uni-app》

文章目录

    • 5. 什么是类型注解?为什么需要使用类型注解?
    • 6. 如何使用 interface 声明一个接口?
    • 7. 什么是类?如何创建一个类?
    • 8. 如何使用类的继承和多态?

5. 什么是类型注解?为什么需要使用类型注解?

类型注解是在 TypeScript 中用于指定变量、函数、类、接口等元素的类型的一种方式。它们是通过在代码中添加额外的类型信息来增强类型系统的功能。

使用类型注解的主要原因是为了提供更好的类型安全性和开发便利性。通过使用类型注解,您可以在代码中明确地指定变量、函数、类、接口等元素的类型,从而使编译器能够在编译过程中检查类型错误,并在运行时避免潜在的错误。

以下是使用类型注解的一些优点:

  1. 类型安全性:类型注解确保了代码中变量和函数的类型是正确的,从而避免了潜在的类型错误和运行时错误。
  2. 提高代码可读性:通过声明变量和函数的类型,您可以更好地理解代码的意图和功能,从而提高代码的可读性。
  3. 自动补全和代码提示:由于类型系统提供了类型信息,因此开发工具可以提供更好的自动补全和代码提示功能,帮助您更快地编写代码。
  4. 更好的代码重构:在大型项目中,随着需求的变化,您可能需要对代码进行重构。类型系统可以帮助您更轻松地进行代码重构,因为它确保了代码的正确性和可维护性。
  5. 更好的团队协作:在团队开发中,使用类型系统可以帮助团队成员更好地理解彼此的代码,从而提高团队协作效率。

总之,类型注解是 TypeScript 中非常重要的一个概念,它们可以提供更好的类型安全性和开发便利性,有助于提高代码的可读性、可维护性和可扩展性。

6. 如何使用 interface 声明一个接口?

在 TypeScript 中,您可以使用interface关键字声明一个接口。接口是一种契约,它定义了一个对象或类的形状(structure),即对象或类必须具有的属性和方法。

下面是一个使用interface声明接口的示例:

interface Person {name: string;age: number;sayHello: () => void;
}

在上述示例中,我们声明了一个名为Person的接口。该接口定义了一个名为name的字符串类型属性、一个名为age的数字类型属性和一个名为sayHello的方法,该方法没有返回值且没有参数。

您可以使用接口来定义类或对象的形状,并在其他类或对象中实现该接口。例如:

class Employee implements Person {name: string;age: number;constructor(name: string, age: number) {this.name = name;this.age = age;}sayHello() {console.log(`Hello, my name is ${this.name}`);}
}

在上述示例中,我们定义了一个名为Employee的类,它实现了Person接口。该类必须具有与接口定义相同的属性和方法,否则会触发类型错误。

您还可以使用接口来定义函数的形状。例如:

interfaceMathFunction {(x: number, y: number): number;
}
function add(x: number, y: number): number {return x + y;
}
function subtract(x: number, y: number): number {return x - y;
}const mathFunctions: MathFunction[] = [add, subtract];

在上述示例中,我们声明了一个名为MathFunction的接口,它定义了一个接受两个数字参数并返回一个数字的函数。然后,我们定义了两个名为addsubtract的函数,它们实现了MathFunction接口。最后,我们创建了一个名为mathFunctions的数组,其中包含了addsubtract函数,因为它们都实现了MathFunction接口。

总之,接口是 TypeScript 中用于定义对象或类的形状、函数的形状以及其他类型的一种契约。通过使用接口,您可以确保代码中的对象、类或函数具有正确的形状,从而提高代码的可读性、可维护性和可扩展性。

7. 什么是类?如何创建一个类?

在 TypeScript 中,类是一种用于创建对象的模板或蓝图。类定义了对象的属性和方法,以及对象的行为和功能。

要创建一个类,您可以使用class关键字,并在花括号中定义类的成员。类的成员可以包括属性、方法和构造函数。

下面是一个创建类的示例:

class Person {name: string;age: number;constructor(name: string, age: number) {this.name = name;this.age = age;}sayHello() {console.log(`Hello, my name is ${this.name}`);}
}

在上述示例中,我们创建了一个名为Person的类。该类具有两个属性nameage,一个构造函数constructor,以及一个名为sayHello的方法。

构造函数constructor用于初始化类的实例。在构造函数中,我们接受两个参数nameage,并将它们分别赋给类的属性。

sayHello方法用于输出一条问候语,其中包含类的实例的名称。

您可以通过创建类的实例来使用类。例如:

const person = new Person("Alice", 25);
person.sayHello();  // 输出: Hello, my name is Alice

在上述示例中,我们创建了一个名为personPerson类的实例,并将其名称设置为"Alice",年龄设置为 25。然后,我们调用了person实例的sayHello方法,输出了一条问候语,其中包含实例的名称。

8. 如何使用类的继承和多态?

在 TypeScript 中,类的继承是通过扩展现有类来创建新类的一种方式。通过继承,您可以在新类中重用现有类的属性和方法,并添加新的属性和方法。

下面是一个使用类的继承的示例:

class Person {name: string;age: number;constructor(name: string, age: number) {this.name = name;this.age = age;}sayHello() {console.log(`Hello, my name is ${this.name}`);}
}class Employee extends Person {department: string;constructor(name: string, age: number, department: string) {super(name, age);this.department = department;}sayGoodbye() {console.log(`Goodbye, my name is ${this.name} and I work in ${this.department}`);}
}

在上述示例中,我们创建了一个名为Person的类和一个名为Employee的类。Employee类扩展了Person类,并添加了一个名为department的新属性和一个名为sayGoodbye的新方法。

Employee类的构造函数中,我们调用了Person类的构造函数,并传递了实例的名称和年龄作为参数。这确保了Employee类的实例具有与Person类的实例相同的属性和方法。

多态是指在不同的上下文中使用相同的方法名,但根据对象的实际类型来执行不同的操作。在 TypeScript 中,您可以通过使用函数的类型注解和接口来实现多态。

下面是一个使用多态的示例:

interface Shape {area: number;
}class Rectangle implements Shape {width: number;height: number;constructor(width: number, height: number) {this.width = width;this.height = height;}get area() {return this.width * this.height;}
}class Circle implements Shape {radius: number;constructor(radius: number) {this.radius = radius;}get area() {return Math.PI * this.radius * this.radius;}
}function calculateArea(shape: Shape) {return shape.area;
}const rectangle = new Rectangle(5, 10);
const circle = new Circle(5);console.log(calculateArea(rectangle));  // 输出: 50
console.log(calculateArea(circle));  // 输出: 78.53981633974483

在上述示例中,我们创建了两个类RectangleCircle,它们都实现了Shape接口。Shape接口定义了一个名为area的属性,用于计算形状的面积。

calculateArea函数接受一个Shape类型的参数,并返回该形状的面积。由于RectangleCircle类都实现了Shape接口,因此我们可以将它们作为参数传递给calculateArea函数,并获得正确的结果。

这就是多态的体现,因为calculateArea函数可以根据传递给它的实际类型来执行不同的操作,而不需要关心对象的具体实现细节。

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

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

相关文章

#define例题

我们已经学了#define的所有知识,让我们来看这道题,可不要又陷入陷阱 题目要求: #define N 4 #define Y(n) ((N2)*n) int main() {int z 2 * (N Y(5 1));printf("z%d\n", z);return 0; } 求这个z的值是多少? 我们直接…

项目去除git版本控制

我 | 在这里 🕵️ 读书 | 长沙 ⭐软件工程 ⭐ 本科 🏠 工作 | 广州 ⭐ Java 全栈开发(软件工程师) 🎃 爱好 | 研究技术、旅游、阅读、运动、喜欢流行歌曲 ✈️已经旅游的地点 | 新疆-乌鲁木齐、新疆-吐鲁番、广东-广州…

详解Rust编程中的生命周期

1.摘要 生命周期在Rust编程中是一个重要概念, 它能确保引用像预期的那样一直有效。在Rust语言中, 每一个引用都有其生命周期, 通俗讲就是每个引用在程序执行的过程中都有其自身的作用域, 一旦离开其作用域, 其生命周期也宣告结束, 值不再有效。幸运的是, 在绝大多数时间里, 生…

智能优化算法应用:基于海鸥算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于海鸥算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于海鸥算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.海鸥算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

torch.nn.batchnorm1d,torch.nn.batchnorm2d,torch.nn.LayerNorm解释:

批量归一化是一种加速神经网络训练和提升模型泛化能力的技术。它对每个特征维度进行标准化处理,即调整每个特征的均值和标准差,使得它们的分布更加稳定。 Batch Norm主要是为了让输入在激活函数的敏感区。所以BatchNorm层要加在激活函数前面。 1.torch.…

【Linux学习笔记】protobuf 基本数据编码

https://zhuanlan.zhihu.com/p/557457644https://zhuanlan.zhihu.com/p/557457644 [新文导读] 从Base64到Protobuf,详解Protobuf的数据编码原理本篇将从Base64再到Base128编码,带你一起从底层来理解Protobuf的数据编码原理。本文结构总体与 Protobuf 官…

怎样提升伦敦银买卖技巧?

如果投资者想提升伦敦银的买卖技巧,可以学习一些有用的技术分析方法。所谓技术分析,就是通过对行情过往价格和相关交易数据进行收集,用图表的方式解读白银市场,进而预测行情未来主线走势、判断价格细节变化、寻找重要支撑点阻力点…

养生馆服务预约会员管理系统小程序效果如何

中医养生馆的全国数量逐渐增加,各种疾病困扰下,有些病往往通过养生馆即可治好,比如常见的针灸、按摩、药理滋补、切脉等,都有很高的市场需求度,而随着众多商家入局赛道及消费升级,传统中医养生馆经营痛点也…

【华为OD】B\C卷真题:100%通过:找城市 C/C++实现

【华为OD】B\C卷真题:100%通过:找城市 C/C实现 题目描述: 一张地图上有n个城市,城市和城市之间有且只有一条道路相连:要么直接相连,要么通过其它城市中转相连(可中转一次或多次)。…

Redis面试题:redis做为缓存,数据的持久化是怎么做的?两种持久化方式有什么区别呢?这两种方式,哪种恢复的比较快呢?

目录 面试官:redis做为缓存,数据的持久化是怎么做的? 面试官:这两种持久化方式有什么区别呢? 面试官:这两种方式,哪种恢复的比较快呢? 面试官:redis做为缓存&#xff…

C语言基础介绍

1. C语言基础知识 C语言是一种计算机编程语言,是一门用于编写系统软件和应用软件的高级语言。C语言的基础知识包括: 数据类型:C语言中的数据类型包括整型、浮点型、字符型等。 变量:C语言中使用变量来存储数据,变量必…