【问题标题】:Return same object as argument返回与参数相同的对象
【发布时间】:2019-02-22 00:38:56
【问题描述】:

这可能是一种反模式,但我想返回相同的对象作为参数,在这种情况下像这样:

const handleConnection = (s: net.Socket): net.Socket => {

  s.pipe(createParser()).on('data', (d: any) => {

    log.info(chalk.green.underline('dygrep server response:'));

    if (d && d.lastMessage) {
      process.stdout.write(prompt);
    }

  });

  return s;

};

所以理想的做法是做这样的事情:

const handleConnection = (s: net.Socket): s => {

  s.pipe(createParser()).on('data', (d: any) => {

    log.info(chalk.green.underline('dygrep server response:'));

    if (d && d.lastMessage) {
      process.stdout.write(prompt);
    }

  });


  return s;

};

但是是的,这不太正确 - 我如何告诉 TypeScript 我正在返回其中一个参数?

【问题讨论】:

  • 您是否试图在编译时强制执行参数和返回值不仅属于同一类型,而且必须是同一对象这一事实?

标签: typescript tsc typescript3.0


【解决方案1】:

我如何告诉 TypeScript 我正在返回参数之一

泛型。约束是返回与参数相同,例如

function handleConnection<T extends net.Socket>(arg:T):T{}

在这里,作为 arg 传入的任何内容都是返回的内容。

【讨论】:

  • 你确定我不能返回一个新的 net.Socket 实例吗?对我来说,考虑到打字,这似乎是可能的。
猜你喜欢
  • 1970-01-01
  • 2014-02-05
  • 2019-12-23
  • 2017-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-24
相关资源
最近更新 更多