// 定义一个名为 mockCheck 的函数,该函数返回一个 Promise
function mockCheck(): Promise<boolean> {
// 创建一个新的 Promise
return new Promise((resolve) => {
// 使用 setTimeout 模拟异步操作,例如网络请求或其他耗时操作
setTimeout(() => {
// 当异步操作完成后,使用 resolve 方法将 Promise 解析为 true
resolve(true);
}, 3000); // 异步操作将在 3 秒后完成
});
}
这里的Promise<boolean>中的boolean是promise resolve后的值,是.then中(res)=>{}的res,
类似于普通函数的返回值,但是promise比较特殊,是resolve或者是reject的值。
现在有这么个代码,是有问题的
这里使用interface定义函数,是可以的,但也是第一次见 【入参】:【返回值】
interface A {
<T = any>(): Promise<Data<T>>;
}
interface Data<T> {
name: T;
}
let a: A = () => {
return new Promise(resolve => {
resolve({ name: "test" });
});
};
a().then(data => {
console.log(data.name); // test
});
以下两个是正确的
1.
interface A<T> {
(): Promise<Data<T>>;
}
interface Data<T> {
name: T;
}
let a: A<string> = (): Promise<Data<string>> => {
return new Promise<Data<string>>(resolve => {
resolve({ name: "test" });
});
};
a().then((data: Data<string>) => {
console.log(data.name); // 输出 'test'
});
2.
// 定义一个接口描述 Promise 解析的值
interface TestObject {
name: string;
}
// 定义 a 函数的类型
const a: () => Promise<TestObject> = () => {
// 返回一个新的 Promise,其中 resolve 的参数类型为 TestObject
return new Promise<TestObject>((resolve) => {
// resolve 被调用时传入一个符合 TestObject 接口的对象
resolve({ name: "test" });
});
};
// 使用 a 函数,并处理返回的 Promise
a().then((data: TestObject) => {
// TypeScript 现在知道 data 是 TestObject 类型,可以安全地访问 name 属性
console.log(data.name); // 输出 "test"
});