一道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):<

你可能感兴趣的:(typescript,javascript,开发语言)