当前位置: 首页 > news >正文

TS2023年面试题汇总~~~~持续更新中!!!!

文章目录

  • 一、typescript 的数据类型有哪些
  • 二、TypeScript 中枚举类型的理解
  • 三、TypeScript 中接口的理解
  • 四, TypeScript 中类的理解
  • 五,TypeScript 中泛型的理解?
  • 六,TypeScript 中高级类型的理解?
  • 六,TypeScript 中type与interface区别

一、typescript 的数据类型有哪些

基本类型:number、string、boolean、null、undefined、symbol、bigint
数组类型:number[]、string[]、boolean[]、Array、Array、Array
元组类型:[number, string, boolean]
枚举类型:enum Color {Red, Green, Blue}
Any类型:any
Void类型:void
Object类型:object、Object
Never类型:never

二、TypeScript 中枚举类型的理解

枚举类型是 TypeScript 中的一种数据类型,它允许我们定义一些具名的常量集合。使用枚举类型可以更加直观地表达代码含义,提高代码可读性和可维护性。
在 TypeScript 中,枚举类型通过enum关键字进行定义。例如:

enum Direction {Up,Down,Left,Right
}

在这个例子中,我们定义了一个名为 Direction 的枚举类型,其中包含了四个常量成员:Up、Down、Left 和 Right。默认情况下,枚举成员的值会从0开始自动编号,也可以手动指定值

三、TypeScript 中接口的理解

在 TypeScript 中,接口(Interface)是一种抽象的定义,用来描述对象的形状。它定义了一个对象应该具有的属性和方法

接口的应用场景很广泛,例如在定义函数参数时,可以使用接口来规范参数的类型和结构;在定义时,可以使用接口来规范类的结构;在定义复杂的对象类型时,可以使用接口来提高代码的可读性和可维护性。

// 先定义一个接口
interface IUser {name: string;age: number;
}
const getUserInfo = (user: IUser): string => {return `name: ${user.name}, age: ${user.age}`;
};
// 正确的调用
getUserInfo({name: "koala", age: 18});

四, TypeScript 中类的理解

在 TypeScript 中,类是一种定义对象属性和方法的结构化方式,使用 class 关键字来定义。

类可以包含属性和方法,通过实例化类可以创建对象,对象可以访问类中定义的属性和方法。

与 JavaScript 不同的是,TypeScript 中的类可以使用访问修饰符来控制属性和方法的访问级别,如 public(默认值,可以自由的访问类程序里定义的成员)private(只能够在该类的内部进行访问)protected(除了在该类的内部可以访问,还可以在子类中仍然可以访问)

类也可以继承其他类,使用 extends 关键字来实现继承,从而可以复用已有的类定义。

类还可以实现接口,这种方式称为类实现接口,使用 implements 关键字来实现接口。

总的来说,类是面向对象编程的基本组成部分,可以通过类来创建具有一定属性和行为的对象,并且 TypeScript 中的类支持访问修饰符和继承等面向对象编程的概念,使得代码更加规范和易于维护。

五,TypeScript 中泛型的理解?

在 TypeScript 中,泛型可以让我们在定义函数、类、接口时不预先定义具体的类型,而是在使用时再指定类型。这使得代码更加灵活且可复用性更高。

以下是一些泛型的基本概念:

  1. 泛型函数:使用泛型来定义函数的参数和返回值类型。
function identity<T>(arg: T): T {return arg;
}

定义泛型的时候,可以一次定义多个类型参数,比如我们可以同时定义泛型 T 和 泛型 U:

  1. 泛型接口:使用泛型来定义接口的属性或方法。
interface Array<T> {length: number;push(...items: T[]): void;forEach(callbackfn: (value: T, index: number, array: T[]) => void): void;
}
  1. 泛型类:使用泛型来定义类的属性和方法的类型。
class GenericNumber<T> {zeroValue: T;add: (x: T, y: T) => T;
}
let myGenericNumber = new GenericNumber<number>();
myGenericNumber.zeroValue = 0;
myGenericNumber.add = function(x, y) { return x + y; };

六,TypeScript 中高级类型的理解?

  1. 交叉类型
    使用&符号表示,可以将多个类型合并成一个类型。

  2. 联合类型
    使用|符号表示,可以表示一个值属于多种类型之一。

  3. 类型别名
    使用 type 关键字定义一个类型别名,方便在其他地方引用该类型。

  4. 类型索引
    keyof 类似于 Object.keys ,用于获取一个接口中 Key 的联合类型。

	interface Button {type: stringtext: string}type ButtonKeys = keyof Button// 等效于type ButtonKeys = "type" | "text"
  1. 类型约束
  2. 映射类型
    通过 in 关键字做类型的映射,遍历已有接口的key或者是遍历联合类型
type Readonly<T> = {readonly [P in keyof T]: T[P];
};interface Obj {a: stringb: string
}type ReadOnlyObj = Readonly<Obj>

上述的结构,可以分成这些步骤:

  • keyof T:通过类型索引 keyof 的得到联合类型 ‘a’ | ‘b’
  • P in keyof T 等同于 p in ‘a’ | ‘b’,相当于执行了一次 forEach 的逻辑,遍历 ‘a’ | ‘b’

所以最终ReadOnlyObj的接口为下述:

interface ReadOnlyObj {readonly a: string;readonly b: string;
}
  • 条件类型
    使用extends关键字和三目运算符 ?:,可以根据类型关系推断出另一个类型。

六,TypeScript 中type与interface区别

  • type 可以定义基本类型、联合类型、元组和其他自定义类型,而 interface 只能定义对象类型。
  • interface 支持继承,而 type 不支持。
  • 当定义类型别名时,type 可以使用联合类型、交叉类型和条件类型等高级类型,而 interface 不支持。
  • type 是对类型的重新定义,而 interface 是对类型的声明。在某些情况下,type
    可以使用更通用的语法,使得类型定义更加简洁易懂
  • 在定义类型时,interface 可以使用 extends、implements 和 keyof 等关键字来增强类型的功能。

相关文章:

TS2023年面试题汇总~~~~持续更新中!!!!

文章目录一、typescript 的数据类型有哪些二、TypeScript 中枚举类型的理解三、TypeScript 中接口的理解四&#xff0c; TypeScript 中类的理解五&#xff0c;TypeScript 中泛型的理解&#xff1f;六&#xff0c;TypeScript 中高级类型的理解&#xff1f;六&#xff0c;TypeScr…...

CSS模块的书写以及删除线的作用和来历什么是删除线

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style>/*关羽这一行代码变为绿色*/#gy_li{color: green}/*张飞,苹果这一行代码变为黄色*/#zf_li,#pg_ul{color: yellow}/*i…...

Libhevc介绍

随着高清电视的普及和4K、8K超高清电视的出现&#xff0c;视频编解码技术也得到了广泛应用和发展。H.265/HEVC (High Efficiency Video Coding) 编解码标准作为一种新一代的视频编码技术&#xff0c;具有更高的压缩率和更好的画面质量&#xff0c;已经被成为未来视频编码的趋势…...

基于Tensorflow的最基本GAN网络模型

import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers import matplotlib.pyplot as plt %matplotlib inline import numpy as np import glob import os #&#xff08;1&#xff09;创建输入管道 # 导入原始数据 (train_images, train…...

数据质量管理概述

1、数据质量的概念 指的是在组织业务&#xff0c;管理要求下&#xff0c;符合数据使用者满足业务&#xff0c;管理需求的评价方式 2、数据质量管理的概念 3、4种常见低质量数据情况 1&#xff09;重要数据缺失 有些信息暂时无法获取或者获取代价太大信息在采集输入中遗漏属…...

C++ const、volatile和mutable关键字详解

对于cv&#xff08;const 与 volatile&#xff09;类型限定符和关键字mutable在《cppreference》中的定义为&#xff1a; cv可出现于任何类型说明符中&#xff0c;以指定被声明对象或被命名类型的常量性&#xff08;constness&#xff09;或易变性&#xff08;volatility&#…...

MySQL实验四:数据更新

MySQL实验四&#xff1a;数据更新 目录MySQL实验四&#xff1a;数据更新导读表结构sql建表语句模型图1、 SQL更新&#xff1a;将所有学生的年龄增加1岁代码2、SQL更新&#xff1a;修改“高等数学”课程倒数三名成绩&#xff0c;在原来分数上减5分代码解析3、SQl更新&#xff1a…...

商汤科技推出“日日新SenseNova”,大模型体系赋能人工智能新未来

2023年4月10日&#xff0c;商汤科技SenseTime技术交流日活动在上海举行&#xff0c;分享了以“大模型大算力”推进AGI&#xff08;通用人工智能&#xff09;发展的战略布局&#xff0c;并公布了商汤在该战略下的“日日新SenseNova”大模型体系。 公开信息显示&#xff0c;商汤科…...

【中创AI】斯坦福人工智能年度报告:AI论文发表量中国世界第一!

斯坦福以人为本人工智能研究所 (HAI) 发布了最新一期的 2023 AI 指数 (2023 AI Index) 报告&#xff0c;探讨了过去一年机器学习的发展。 &#xff08;斯坦福HAI于2019年初成立&#xff0c;致力于研究新的AI方法&#xff0c;并研究该技术对社会的影响。其每年发布一份AI指数报…...

Java基础(五)面向对象编程(基础)

学习面向对象内容的三条主线 Java类及类的成员&#xff1a;&#xff08;重点&#xff09;属性、方法、构造器&#xff1b;&#xff08;熟悉&#xff09;代码块、内部类面向对象的特征&#xff1a;封装、继承、多态、&#xff08;抽象&#xff09;其他关键字的使用&#xff1a;…...

寻找CSDN平行世界的另一个你

本文由 大侠(AhcaoZhu)原创&#xff0c;转载请声明。 链接: https://blog.csdn.net/Ahcao2008 寻找CSDN平行世界的另一个你摘要前言列表测试目的摘要 本文作了一个测试&#xff0c;看看在 CSDN 的博文中&#xff0c;艾特&#xff08;&#xff09;某个好友&#xff0c;TA是否能够…...

ChatGPT的发展对客户支持能提供什么帮助?

多数组织认为客户服务是一种开销&#xff0c;实际上还可以将客户服务看成是一种机会。它可以让你在销售后继续推动客户的价值。成功的企业深知&#xff0c;客户服务不仅可以留住客户&#xff0c;还可以增加企业收入。客户服务是被低估的手段&#xff0c;它可以通过推荐、见证和…...

数据安全评估体系建设

数据安全评估是指对重要数据、个人信息等数据资产的价值与权益、合规性、威胁、脆弱性、防护等进行分析和判断&#xff0c;以评估数据安全事件发生的概率和可能造成的损失&#xff0c;并采取相应的措施和建议。 数据安全评估的重要性和背景 1.国家法律法规下的合规需要 目前数…...

论文阅读 - ANEMONE: Graph Anomaly Detection with Multi-Scale Contrastive Learning

目录 摘要 1 简介 2 问题陈述 3 PROPOSED ANEMONE FRAMEWORK 3.1 多尺度对比学习模型 3.1.1 增强的自我网络生成 3.1.2 补丁级对比网络 3.1.3 上下文级对比网络 3.1.4 联合训练 3.2 统计异常估计器 4 EXPERIMENTS 4.1 Experimental Setup 4.1.1 Datasets 4.1.2 …...

数据密集型应用存储与检索设计

本文内容翻译自《数据密集型应用系统设计》&#xff0c;豆瓣评分高达 9.7 分。 什么是「数据密集型应用系统」&#xff1f; 当数据&#xff08;数据量、数据复杂度、数据变化速度&#xff09;是一个应用的主要挑战&#xff0c;那么可以把这个应用称为数据密集型的。与之相对的是…...

Spring Boot集成Redis实现keyspace监听 | Spring Cloud 34

一、前言 在前面我们通过以下章节对Redis的keyevent&#xff08;键事件通知&#xff09;使用有了基础的了解&#xff1a; Spring Boot集成Redis实现keyevent监听 | Spring Cloud 33 现在开始我们正式学习Redis的keyspace&#xff08;键空间通知&#xff09;&#xff0c;在本…...

如何搭建chatGPT4.0模型-国内如何用chatGPT4.0

国内如何用chatGPT4.0 在国内&#xff0c;目前可以通过以下途径使用 OpenAI 的 ChatGPT 4.0&#xff1a; 自己搭建模型&#xff1a;如果您具备一定的技术能力&#xff0c;可以通过下载预训练模型和相关的开发工具包&#xff0c;自行搭建 ChatGPT 4.0 模型。OpenAI提供了相关的…...

【故障定位】基于多元宇宙算法的主动配电网故障定位方法研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

基于html+css的自适应展示1

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…...

DolphinDB +Python Airflow 高效实现数据清洗

DolphinDB 作为一款高性能时序数据库&#xff0c;其在实际生产环境中常有数据的清洗、装换以及加载等需求&#xff0c;而对于该如何结构化管理好 ETL 作业&#xff0c;Airflow 提供了一种很好的思路。本篇教程为生产环境中 ETL 实践需求提供了一个解决方案&#xff0c;将 Pytho…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用&#xff0c;结合SQLite数据库实现联系人管理功能&#xff0c;并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能&#xff0c;同时可以最小化到系统…...