【面试】typescript

目录

为什么用TypeScript?

TS和JS的区别

控制类成员可见性的访问关键字?

public

protected),该类及其子类都可以访问它们。 但是该类的实例无法访问。

私有(private),只有类的成员可以访问它们。

接口interface与类型别名type

对象

函数

typeof

泛型T

extends

interface extends interface/type

type & interface/type(与联合类型相对,又名交叉类型)

interface(数据结构)

同名接口自动合并

type(类型关系)

类型别名

联合类型:| 或

元祖类型

工具/高级类型Utility Types

Partial :T全部属性变为可选项 ?

Required与Partial相反

Readonly

Pick:T中选K,>

Omit和Pick相反

Extract:T U交集,>

Extract和Exclude相反

判断类型:is


TS4 入门笔记

1.2W字 | 了不起的 TypeScript 入门教程 - 掘金

typescript史上最强学习入门文章(2w字) - 掘金

2022年了,我才开始学 typescript ,晚吗?(7.5k字总结) - 掘金

为什么用TypeScript?

  • 强制类型,防止报错
  • 自动类型推断,保证变量的类型稳定
// let a: string  ->  类型推断
let a = 'hello'
a = 123;   // error
  • 强大的类型系统,包括泛型
  • 支持静态类型。(主要改进)更有利于构建大型应用

代码可维护性=强类型语言(低级错误)+个人素质和团队规范约束(高级错误)

TS和JS的区别

控制类成员可见性的访问关键字?

public

protected),该类及其子类都可以访问它们。 但是该类的实例无法访问。

私有(private),只有类的成员可以访问它们。

TS与java不同,TS默认隐式公共的,

TS符合 JS 的便利性,java默认private,符合安全性

接口interface与类型别名type

对象

interface User {
  name: string;
  age: number;
}
等价于
type User = {
  name: string;
  age: number;
};


const user: User = {
  name: "John",
  age: 25
};

函数

interface SetUser {
  (name: string, age: number): void;
}
等价于
type SetUser = (name: string, age: number) => void;


const setUser: SetUser = (name, age) => {
  // 实际的函数实现
  console.log(`Setting user: ${name}, ${age}`);
};

typeof

let x = "John";

const person: Name<typeof x> = {
  name: x,
};

let div = document.createElement('div');
type B = typeof div

泛型T

interface Name<T> {
  name: T;
}

// 使用 string 类型
const personWithString: Name<string> = {
  name: "John",
};

// 使用 number 类型
const personWithNumber: Name<number> = {
  name: 25,
};

// 定义 Callback 类型
type Callback<T> = (data: T) => void;


// Callback 的使用
const stringCallback: Callback<string> = (data) => {
  console.log(`收到回调数据: ${data}`);
};

// 定义 Pair 类型
type Pair<T> = [T, T];!

const numberPair: Pair<number> = [42, 23];

extends

interface extends interface/type
interface Name { name: string; }
等价于
type Name = { name: string; } 

interface User extends Name { age: number; }
type & interface/type(与联合类型相对,又名交叉类型)
interface Name { name: string; } 
等价于
type Name = { name: string; } 

type User = Name & { age: number };

interface(数据结构)

同名接口自动合并

type(类型关系)

类型别名
type Str = string
type NameLookup = Dictionary<string, Person>; 
联合类型:| 或
元祖类型

数组类型一般是

但有时需要存储不同类型的值

所以可以通过ts特有的元组限制数组元素的个数和类型

工具/高级类型Utility Types

Partial<T> :T全部属性变为可选项 ?

Required与Partial相反

Readonly

Pick<T, K>:T中选K

Omit和Pick相反

type A = {
  username?: string
  age?: number
  readonly gender: string
}

type B = Readonly<A>
// Partial(可选)
type C = Partial<A>

type D = Pick<A, 'username'|'age'>
//Record(改变类型)
//keyof 操作符可以用来一个对象中的所有 key 值:
type E = Record<keyof A, string>

//Required(将可选变为必选)
type F = Required<A>

Extract<T, U>:T U交集

Extract和Exclude相反

判断类型:is

// !!! 使用 is 来确认参数 s 是一个 string 类型
function isString(s): s is string {
  return typeof s === 'string';
}

「2022」TypeScript最新高频面试题指南 - 掘金

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是媒体发布?媒体发布平台有哪些?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 一&#xff0c;什么是媒体发布&#xff1f; 媒体发布是指利用互联网媒体及移动端媒体和传统媒体发布关于人物、品牌、商业公司等的新闻及推广软文和传记等的行为。媒体平台可以是电视、…

C51--LCD1602显示屏

LCD602显示&#xff1a; 1、概述 LCD602是一种工业字符型液晶&#xff0c;能够同时显示16x02&#xff0c;即32字符&#xff08;16列&#xff0c;2行&#xff09; 2、引脚&#xff1a; VSS&#xff1a;电源地VDD&#xff1a;电源正极——5V电源VO&#xff1a; 液晶显示偏压 …

激光切割机切割工件出现锯齿是什么原因?

金属激光切割机因切割速度快&#xff0c;效率高&#xff0c;切割效果好受到广大金属加工需求的厂家追捧&#xff0c;但在使用时不免出现一些小问题&#xff0c;如&#xff1a;在激光切割加工的时候出现锯齿的问题。 编辑搜图 请点击输入图片描述&#xff08;最多18字&#xff…

详解Python中httptools模块的使用

httptools 是一个 HTTP 解析器&#xff0c;它首先提供了一个 parse_url 函数&#xff0c;用来解析 URL。这篇文章就来和大家聊聊它的用法吧&#xff0c;感兴趣的可以了解一下 如果你用过 FastAPI 的话&#xff0c;那么你一定知道 uvicorn&#xff0c;它是一个基于 uvloop 和 h…

京东API商品详情接口,通过商品ID获取商品名称,淘宝主图,价格,颜色规格尺寸,库存,SKU数据等调用示例

要接入京东API接口以采集电商平台上的商品数据&#xff0c;可以按照以下步骤进行&#xff1a; 注册并获取API密钥&#xff1a;在使用API接口之前&#xff0c;需要注册并获取API密钥。API密钥是识别身份的唯一标识符。每个API接口都有自己的注册、认证和授权过程&#xff0c;因…

Find My电容笔|苹果Find My技术与电容笔结合,智能防丢,全球定位

随着平板电脑的流行&#xff0c;有不少厂商都投入到了电容笔的开发当中&#xff0c;现在的电容笔不仅在精度上有了提高&#xff0c;甚至在笔触和压感上的研究都有进步。电容笔是利用导体材料制作的具有导电特性、用来触控电容式屏幕完成人机对话操作用的笔&#xff0c;电容笔通…

tsx语法

安装JSX库 安装完之后在vite.config.ts进行插件使用&#xff0c;代码如下&#xff1a; 然后就可以愉快的使用TSX来开发Vue组件了&#xff0c;下面主要说一下SFC和TSX的部分区别。 基本语法对照 defineComponent 和 setup setup中函数的返回值有多种方式&#xff0c;可以直接…

异常数据检测 | Python实现oneclassSVM模型异常数据检测

支持向量机(SVM)的异常检测 SVM通常应用于监督式学习,但OneClassSVM[8]算法可用于将异常检测这样的无监督式学习,它学习一个用于异常检测的决策函数其主要功能将新数据分类为与训练集相似的正常值或不相似的异常值。 OneClassSVM OneClassSVM的思想来源于这篇论文[9],SVM使用…

挑战传统IT:RPA以更低的成本和更高的效率领跑数字化转型

在企业数字化进程中&#xff0c;传统的IT解决方案往往带来高成本和低效率的问题。因此&#xff0c;如何顺利地、平稳地进行数字化转型对企业来说是核心考虑。 为此&#xff0c;本文将深入探讨RPA&#xff08;Robotic Process Automation&#xff09;如何以其独特的优势&#xf…

RabbitMQ消息模型之发布订阅Publish-Subscribe

发布订阅模型 Publish/Subscribe 发布订阅模型也称为广播模型&#xff0c;交换机类型需要指定为Fanout&#xff0c;正如从名称中猜到的那样&#xff0c;它是将接收到的所有消息广播到它知道的所有队列中。每个消费者都监听自己的队列&#xff0c;所以同一个消息&#xff0c;会…

MNIST手写数字识别

本篇文章是博主在人工智能等领域学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对人工智能等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅解。文章分类在Pytorch&#xff…

OpenMMlab导出FCN模型并用onnxruntime推理

导出onnx文件 直接使用脚本 import torch from mmseg.apis init_modelconfig_file configs/fcn/fcn_r18-d8_4xb2-80k_cityscapes-512x1024.py checkpoint_file fcn_r18-d8_512x1024_80k_cityscapes_20201225_021327-6c50f8b4.pth model init_model(config_file, checkpoin…

YOLOv8 代码部署

一、获取代码 YOLOv8官方GitHub网址 https://github.com/ultralytics/ultralytics 获取YOLOv8代码压缩包 二、虚拟环境配置 这个就不写了&#xff0c;装个Anaconda&#xff0c;网上教程很多 三、PyCharm安装与配置&#xff08;可选&#xff09; 这个也不写了&#xff0c;…

磁环电感参数计算

磁环电感参数计算 1.什么是电感磁饱和2.电感饱和的原因3.电感饱和带来的影响3.1 感应电动势变化3.2 电感值变化3.3 功率损耗增加3.4 系统稳定性受到影响4.饱和电流计算最近在做DC/DC电源,电感是用磁环绕制的,所以关注一下磁环绕制电感参数的计算,学习学习。 某款磁环参数。 …

SpringBoot——Swagger2 接口规范

优质博文&#xff1a;IT-BLOG-CN 如今&#xff0c;REST和微服务已经有了很大的发展势头。但是&#xff0c;REST规范中并没有提供一种规范来编写我们的对外REST接口API文档。每个人都在用自己的方式记录api文档&#xff0c;因此没有一种标准规范能够让我们很容易的理解和使用该…

3dMax导出glft和glb格式模型插件Max2Babylon教程

为了满足Autodesk提供自己的导出管道之前的迫切需要&#xff0c;Babylon.js导出器可用于3dMax。导出器可以将3dMax场景导出为.glTF文件、.glb文件或.babylon文件。 【适用版本】 3dMax2015 - 2024 【安装方法】 1.选择和自己电脑中3dMax所对应的插件版本&#xff0c;解压缩。…

基于Qt MP3音频播放器示例(可制作音频播放器)

​本次MP3文件也给出来,方便大家调试。话不多说直接上源码。 整个项目下载地址:CSDN:GetCode 昵称-》Qt魔术师:https://gitcode.com/m0_45463480/QtMP3/tree/main## .pro # 指定项目类型为应用程序。TEMPLATE = app# 指定项目的名称为musicplayerTARGET = musicplayer# 添…

Matlab下载许可证文件 教程(在账号有许可证的前提下)

文章目录 Part.I IntroductionPart.II 许可证文件过期解决方案Chap.I 使用 Internet 自动激活Chap.II 在不使用 Internet 的情况下手动激活 Part.I Introduction 本文主要介绍&#xff0c;在 Mathwork 账号有许可证的前提下&#xff0c;下载许可证的操作流程。 好久没有用 Mat…

使用Redis实现接口防抖

说明&#xff1a;实际开发中&#xff0c;我们在前端页面上点击了一个按钮&#xff0c;访问了一个接口&#xff0c;这时因为网络波动或者其他原因&#xff0c;页面上没有反应&#xff0c;用户可能会在短时间内再次点击一次或者用户以为没有点到&#xff0c;很快的又点了一次。导…

基于springboot的电影院管理系统的设计与实现 (含论文和源码视频导入教程)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于springboot的电影院管理系统7拥有两种角色 管理员&#xff1a;用户管理、购票统计、电影管理、电影类型管理、放映厅管理、订单管理等 用户&#xff1a;登录注册、查看各种信息、购票…