【TS】typescript 获取函数入参类型、返回值类型、promise返回值类型

news2024/9/23 17:13:18

文章目录

    • 1. 准备工作
    • 2. 获取函数入参的类型
    • 3. 获取函数返回值类型
    • 4. 获取promise返回值类型

1. 准备工作

创建 utils.ts

interface User {
  id: number;
  name: string;
  age: number;
}
interface Params {
  method: string;
  url: string;
}

function getUserList(
  params: Params,
  other: string,
  data: User[]
): Promise<User[]> {
  return new Promise((resolve, reject) => {
    resolve([
      {
        id: 1,
        name: "张三",
        age: 18,
      },
      {
        id: 2,
        name: "李四",
        age: 20,
      },
    ]);
  });
}
export default getUserList;

创建 index.ts

import getUserList from "./utils";

getUserList()

这个时候存在以下问题

  1. 如若函数参数、返回值类型没有导出,你就不知道怎么传递了,特别是函数的参数不是基本数据类型
  2. 在开发中一般,都是要把 函数的入参、返回值 ,先定义个变量准备接收

在这里插入图片描述

可以看出是需要三个参数,但是这三个参数类型没导出 怎么办呢?

2. 获取函数入参的类型

语法格式

let param1 = Parameters<typeof 这里填写你要获取哪一个函数的参数类型>

在这里插入图片描述

默认是这样的,默认他会把这个函数的入参,放在一个数组里面 ,因为函数不确定有几个入参

如若想获取第一个 入参的类型,就是这样写

let param1 = Parameters<typeof 这里填写你要获取哪一个函数的参数类型>[0]

在这里插入图片描述

这样就能和 前面对应起来了

import getUserList from "./utils";

let param1: Parameters<typeof getUserList>[0] = {
  method: "post",
  url: "http:www.baidu.com",
};
let param2: Parameters<typeof getUserList>[1] = "你好";
let param3: Parameters<typeof getUserList>[2] = [
  { id: 1, age: 20, name: "测试1" },
  { id: 2, age: 20, name: "测试2" },
];

3. 获取函数返回值类型

语法格式

let returnRes= ReturnType<typeof 这里填写你要获取哪一个函数的返回值类型>
import getUserList from "./utils";

let param1: Parameters<typeof getUserList>[0] = {
  method: "post",
  url: "http:www.baidu.com",
};
let param2: Parameters<typeof getUserList>[1] = "你好";
let param3: Parameters<typeof getUserList>[2] = [
  { id: 1, age: 20, name: "测试1" },
  { id: 2, age: 20, name: "测试2" },
];

let returnRes: ReturnType<typeof getUserList>;

returnRes = getUserList(param1, param2, param3);
returnRes.then((res) => {
  let resNew: Awaited<ReturnType<typeof getUserList>>;
  resNew = res;

  console.log(resNew);
});

4. 获取promise返回值类型

语法格式

  let resNew: Awaited<ReturnType<typeof 这里填写你要获取哪一个函数的Promise返回值类型>>;

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RocketMQ 消费者之顺序消费和流程详解附源码解析

1. 背景 本文是 RocketMQ 消费者系列的第六篇&#xff0c;上一篇主要介绍并发消费&#xff0c;而本片主要介绍 RocketMQ 顺序消费的设计和流程。 我把 RocketMQ 消费分成如下几个步骤 重平衡 消费者拉取消息 Broker 接收拉取请求后从存储中查询消息并返回 消费者消费消息 顺序…

算法学习day10(贪心算法)

贪心算法&#xff1a;由局部最优->全局最优 贪心算法一般分为如下四步&#xff1a; 将问题分解为若干个子问题找出适合的贪心策略求解每一个子问题的最优解将局部最优解堆叠成全局最优解 一、摆动序列&#xff08;理解难&#xff09; 连续数字之间的差有正负的交替&…

GO channel 学习

引言 单纯地将函数并发执行是没有意义的。函数与函数间需要交换数据才能体现并发执行函数的意义。 虽然可以使用共享内存进行数据交换&#xff0c;但是共享内存在不同的goroutine中容易发生竞态问题。为了保证数据交换的正确性&#xff0c;必须使用互斥量对内存进行加锁&#…

视频语音转文字工具用哪个好?推荐6款优质的视频转文字工具

在沉浸于电影情节时&#xff0c;周遭的喧嚣往往成了享受视听的障碍&#xff0c;这时&#xff0c;字幕的重要性便不言而喻。 字幕的作用远不止于此&#xff0c;它是听力受限观众的桥梁&#xff0c;也是语言学习者的得力助手。幸运的是&#xff0c;将视频语音转文字字幕现已变得…

红酒与未来科技:传统与创新的碰撞

在岁月的长河中&#xff0c;红酒以其深邃的色泽、丰富的口感和不同的文化魅力&#xff0c;成为人类文明中的一颗璀璨明珠。而未来科技&#xff0c;则以其迅猛的发展速度和无限的可能性&#xff0c;领着人类走向一个崭新的时代。当红酒与未来科技相遇&#xff0c;一场传统与创新…

电脑自动重启是什么原因呢?99%人都不知道的解决办法,直接打破循环

当你的电脑突然毫无预警地自动重启&#xff0c;不仅打断了工作流程&#xff0c;还可能导致未保存的数据丢失&#xff0c;这无疑是一件令人沮丧的事情。那么&#xff0c;电脑自动重启是什么原因呢&#xff1f;有什么方法可以解决呢&#xff1f;别担心&#xff0c;在大多数情况下…

对象与键值对数组的相互转换Object.entries与Object.fromEntries

Object.entries是JavaScript中的一个内置方法&#xff0c;它可以将一个对象的属性和值转换为一个包含键值对的数组。 let obj {name: mike,age: 18,sex: man } Object.entries(obj)Object.entries的使用场景: 1、动态更新对象属性 let obj {name: mike, age: 18, sex: man…

《昇思25天学习打卡营第02天|qingyun201003》

日期 心得 通过这次的学习&#xff0c;主要是了解过张量的基础概念&#xff0c;同时也知道有关构造张量的方法。通过索引查询张量&#xff0c;张量的运算。通过concat\stack 将张量进行维度链接。Tensor与NumPy的互相转换&#xff0c;但是我似乎并不了解什么它们的概念。也认知…

电脑视频去水印软件哪个好用,电脑上视频去水印的软件

在数字化时代&#xff0c;视频创作已成为许多人展示才华和创意的重要途径。然而&#xff0c;视频中的水印常常让人感到头疼&#xff0c;尤其是当水印影响了视频的整体美观时。本文将为你揭秘如何在电脑上使用各种软件去除视频水印&#xff0c;让你的作品更加专业&#xff01; 方…

时光穿梭机:AI如何让老照片焕发新生,跃然“动”起来

在岁月的长河中&#xff0c;每一张老照片都是时间的低语&#xff0c;承载着过往的记忆与温情。它们静静地躺在相册的角落&#xff0c;或是泛黄的相纸上&#xff0c;定格了某个瞬间的欢笑与泪水&#xff0c;却也因此失去了那份生动的活力。然而&#xff0c;随着人工智能&#xf…

如何做一个迟钝不受伤的打工人?

一、背景 在当前激烈的职场环境中&#xff0c;想要成为一个相对“迟钝”且不易受伤的打工人&#xff0c;以下是一些建议&#xff0c;但请注意&#xff0c;这里的“迟钝”并非指智力上的迟钝&#xff0c;而是指在应对复杂人际关系和压力时展现出的豁达与钝感力&#xff1a; 尊重…

如何在Linux系统安装openGauss数据库并使用固定公网地址远程连接

文章目录 前言1. Linux 安装 openGauss2. Linux 安装cpolar3. 创建openGauss主节点端口号公网地址4. 远程连接openGauss5. 固定连接TCP公网地址6. 固定地址连接测试 前言 本文主要介绍如何在Linux系统如何安装openGauss数据库管理系统&#xff0c;并结合cpolar内网穿透工具生成…

docker基础知识以及windows上的docker desktop 安装

记录以供备忘 基础概念&#xff1a; 什么是docker 将程序和环境一起打包&#xff0c;以在不同操作系统上运行的工具软件 什么是基础镜像 选一个基础操作系统和语言后&#xff0c;将对应的文件系统、依赖库、配置等打包为一个类似压缩包的文件&#xff0c;就是基础镜像 什么是…

【银河麒麟高级服务器操作系统】数据中心系统异常卡死分析处理建议

了解银河麒麟操作系统更多全新产品&#xff0c;请点击访问&#xff1a;https://product.kylinos.cn 1.服务器环境以及配置 【机型】浪潮NF5280M5 处理器&#xff1a; Intel 内存&#xff1a; 1T 【内核版本】 4.19.90-24.4.v2101.ky10.x86_64 【OS镜像版本】 银河麒麟…

python 屏幕显示一个文本窗口,文本窗口显示在当前鼠标在的位置,该文字窗口跟随鼠标移动,并且始终保持最前面显示 ,可以根据文字的多少来自动调节窗口大小

python 屏幕显示一个文本窗口,我有一段文字需要显示,鼠标在那里,文本窗口就在哪里显示,该文字窗口需要跟随鼠标移动,并且始终保持最前面显示,可以根据文字的多少来自动调节窗口大小 仅仅使用 tkinter # -*- coding:utf-8 -*-import tkinter as tkdef update_position(e…

安卓微信8.0之后如何利用缓存找回的三天之前不可见的朋友圈图片

安卓微信8.0之后如何利用缓存找回的三天之前不可见的朋友圈图片 复习了下安卓程序的知识&#xff0c;我们会了解到&#xff0c;安卓程序清楚数据的时候有两个选项 一个是清除全部数据一个是清除缓存。 清除全部数据表示清除应用数据缓存。 对于安卓微信8.0之后而言&#xff0…

动态规划|最长不下降子序列(自用)

参考视频小电视&#xff1a;【动态规划3-1&#xff1a;最长不下降序列】https://www.bilibili.com/video/BV1fK411L751?vd_source8e5e1c8c2ec3b6912ce3d9aa0c73f879 题目 题目分析 使用下标进行存储访问 int a[201]; int f[201];//从第i个数开始的长度 int p[201];//位置访…

centos磁盘空间满了-问题解决

报错问题解释&#xff1a; CentOS系统在运行过程中可能会出现磁盘空间不足的错误。这通常发生在以下几种情况&#xff1a; 系统日志文件或临时文件过大导致磁盘空间不足。 安装了大量软件或文件而没有清理无用文件。 有可能是某个进程占用了大量磁盘空间。 问题解决方法&a…

【C++杂货铺】C++11新特性

目录 &#x1f308; 前言&#x1f308; &#x1f4c1; C11介绍 &#x1f4c1; 统一初始化列表 &#x1f4c1; 声明 &#x1f4c2; auto &#x1f4c2; decltype &#x1f4c2; 返回类型后置 &#x1f4c2; 范围for &#x1f4c2; 模板别名 &#x1f4c2; nullptr &#x1…

彻底开源,免费商用,上海AI实验室把大模型门槛打下来

终于&#xff0c;业内迎来了首个全链条大模型开源体系。 大模型领域&#xff0c;有人探索前沿技术&#xff0c;有人在加速落地&#xff0c;也有人正在推动整个社区进步。 就在近日&#xff0c;AI 社区迎来首个统一的全链条贯穿的大模型开源体系。 虽然社区有LLaMA等影响力较大…