一道TypeScript题目,快速上手TS(keyof,extends,typeof)

一道TypeScript题目,快速上手TS(keyof,extends,typeof)

本人为ts初学者,本文题目和答案均来自于typescript高级用法之infer的理解与使用
由于原文并没有对语法部分进行详细说明,在理解后写下自己的步骤
建议阅读前先阅读下typescript高级用法之infer的理解与使用,有益于帮助理解

题目

interface Action<T> {
   
  payload?: T;
  type: string;
}

class EffectModule {
   
  count = 1;
  message = "hello!";

  delay(input: Promise<number>) {
   
    return input.then(i => ({
   
      payload: `hello ${
     i}!`,
      type: 'delay'
    }));
  }

  setMessage(action: Action<Date>) {
   
    return {
   
      payload: action.payload!.getMilliseconds(),
      type: "set-message"
    };
  }
}

// 修改 Connect 的类型,让 connected 的类型变成预期的类型
type Connect = (module: EffectModule) => any;

const connect: Connect = m => ({
   
  delay: (input: number) => ({
   
    type: 'delay',
    payload: `hello 2`
  }),
  setMessage: (action: Date) => ({
   
    type: "set-message",
    payload: input.getMilliseconds()
  })
});

//需要推断出的类型
type Connected = {
   
  delay(input: number):<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值