Возвращает тот же объект в качестве аргумента

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

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


person Alexander Mills    schedule 18.09.2018    source источник
comment
Вы пытаетесь обеспечить во время компиляции тот факт, что аргумент и возвращаемое значение имеют не только один и тот же тип, но обязательно один и тот же объект?   -  person Cerberus    schedule 18.09.2018


Ответы (1)


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

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

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

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

person basarat    schedule 18.09.2018
comment
Вы уверены, что я не могу вернуть новый экземпляр net.Socket? Мне это кажется возможным, учитывая типизацию. - person Alexander Mills; 18.09.2018