promise + ts

// 定义一个名为 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"
});

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

每天吃饭的羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值