文章目录
- 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()
这个时候存在以下问题
- 如若函数参数、返回值类型
没有导出
,你就不知道怎么传递了,特别是函数的参数不是基本数据类型
- 在开发中一般,都是要把
函数的入参、返回值
,先定义个变量准备接收
可以看出是需要三个参数,但是这三个参数
类型没导出
怎么办呢?
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返回值类型>>;