TS设置接收的形参类型

2024-06-06 12:52
文章标签 类型 设置 ts 接收 形参

本文主要是介绍TS设置接收的形参类型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在我们使用pinia时会接受参数,一般来说是传递两个参数

setGlobalState(...args: ObjToKeyValArray<GlobalState>) {this.$patch({ [args[0]]: args[1] });
}

例如此时传递的是globalStore.setGlobalState("token", "123");

那么此时的args就是["token","123"]

这里定义的ObjToKeyValArray如下

type ObjToKeyValArray<T> = {[K in keyof T]: [K, T[K]];
}[keyof T];

GlobalState定义的ts类型如下

export interface GlobalState {layout: LayoutType;language: LanguageType;maximize: boolean;primary: string;isDark: boolean;isGrey: boolean;isWeak: boolean;asideInverted: boolean;headerInverted: boolean;isCollapse: boolean;accordion: boolean;breadcrumb: boolean;breadcrumbIcon: boolean;tabs: boolean;tabsIcon: boolean;footer: boolean;token: string;userInfo: any;sysInfo: any;socket: any;personnelBoard: Person | null;assemblySize: AssemblySizeType;
}

解释一下上方ts定义

这段 TypeScript 代码定义了一个类型别名 `ObjToKeyValArray<T>`,它将一个对象类型 `T` 转换为由键值对数组组成的元组数组类型。让我解释一下它是如何工作的:1. `type ObjToKeyValArray<T>`:这部分定义了一个类型别名 `ObjToKeyValArray<T>`,它接受一个泛型参数 `T`,表示输入的对象类型。2. `{ [K in keyof T]: [K, T[K]] }`:这是一个映射类型(Mapped Type)。`keyof T` 表示获取对象 `T` 的所有键的联合类型。`[K in keyof T]` 使用映射类型来遍历对象 `T` 的所有键,并为每个键创建一个新的属性。3. 对于每个键 `K`,`[K, T[K]]` 表示一个由键和对应值组成的元组。这就是把对象的键值对转换为数组的操作。例如,如果对象 `T` 的类型是 `{ foo: string; bar: number }`,那么 `[K, T[K]]` 就会分别变成 `['foo', string]` 和 `['bar', number]`。4. `[keyof T]`:这部分是为了获取映射类型 `{ [K in keyof T]: [K, T[K]] }` 中所有属性的联合类型,即所有键值对数组组成的数组类型。综上所述,`ObjToKeyValArray<T>` 接受一个对象类型 `T`,并将其转换为由该对象的所有键值对组成的元组数组类型。

这篇关于TS设置接收的形参类型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1036169

相关文章

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

Python中Json和其他类型相互转换的实现示例

《Python中Json和其他类型相互转换的实现示例》本文介绍了在Python中使用json模块实现json数据与dict、object之间的高效转换,包括loads(),load(),dumps()... 项目中经常会用到json格式转为object对象、dict字典格式等。在此做个记录,方便后续用到该方

SpringBoot请求参数传递与接收示例详解

《SpringBoot请求参数传递与接收示例详解》本文给大家介绍SpringBoot请求参数传递与接收示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录I. 基础参数传递i.查询参数(Query Parameters)ii.路径参数(Path Va

python中的显式声明类型参数使用方式

《python中的显式声明类型参数使用方式》文章探讨了Python3.10+版本中类型注解的使用,指出FastAPI官方示例强调显式声明参数类型,通过|操作符替代Union/Optional,可提升代... 目录背景python函数显式声明的类型汇总基本类型集合类型Optional and Union(py

MySQL中查询和展示LONGBLOB类型数据的技巧总结

《MySQL中查询和展示LONGBLOB类型数据的技巧总结》在MySQL中LONGBLOB是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据,:本文主要介绍MySQL中查询和展示LO... 目录前言1. 查询 LONGBLOB 数据的大小2. 查询并展示 LONGBLOB 数据2.1 转换为十

MySQL设置密码复杂度策略的完整步骤(附代码示例)

《MySQL设置密码复杂度策略的完整步骤(附代码示例)》MySQL密码策略还可能包括密码复杂度的检查,如是否要求密码包含大写字母、小写字母、数字和特殊字符等,:本文主要介绍MySQL设置密码复杂度... 目录前言1. 使用 validate_password 插件1.1 启用 validate_passwo

MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)

《MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)》本文给大家介绍MyBatis的xml中字符串类型判空与非字符串类型判空处理方式,本文给大家介绍的非常详细,对大家的学习或... 目录完整 Hutool 写法版本对比优化为什么status变成Long?为什么 price 没事?怎

C#之枚举类型与随机数详解

《C#之枚举类型与随机数详解》文章讲解了枚举类型的定义与使用方法,包括在main外部声明枚举,用于表示游戏状态和周几状态,枚举值默认从0开始递增,也可手动设置初始值以生成随机数... 目录枚举类型1.定义枚举类型(main外)2.使用生成随机数总结枚举类型1.定义枚举类型(main外)enum 类型名字

Python lambda函数(匿名函数)、参数类型与递归全解析

《Pythonlambda函数(匿名函数)、参数类型与递归全解析》本文详解Python中lambda匿名函数、灵活参数类型和递归函数三大进阶特性,分别介绍其定义、应用场景及注意事项,助力编写简洁高效... 目录一、lambda 匿名函数:简洁的单行函数1. lambda 的定义与基本用法2. lambda

C语言自定义类型之联合和枚举解读

《C语言自定义类型之联合和枚举解读》联合体共享内存,大小由最大成员决定,遵循对齐规则;枚举类型列举可能值,提升可读性和类型安全性,两者在C语言中用于优化内存和程序效率... 目录一、联合体1.1 联合体类型的声明1.2 联合体的特点1.2.1 特点11.2.2 特点21.2.3 特点31.3 联合体的大小1