Вернуть тот же объект, что и аргумент - PullRequest
0 голосов
/ 18 сентября 2018

Это, вероятно, анти-шаблон, но я хочу вернуть тот же объект в качестве аргумента, в данном случае, например, так:

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, что я возвращаю один из аргументов?

1 Ответ

0 голосов
/ 18 сентября 2018

как мне сообщить TypeScript, что я возвращаю один из аргументов

Дженерики. Ограничение - это то же самое, что и аргумент, например

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

Здесь все, что передается как аргумент arg, является тем, что возвращается.

...