Question: I have an instrument and I can `telnet` it to using `telent 192.168.100.2 2000` from `cmd` window. This will open up a terminal and I can give commands to the instrument. For example, a command like `"/tgc/rf/tx1 set gain_target -2.0"`. This works fine. Is there a way I can give these together in a single step; something like this :

```
telent 192.168.100.2 2000 /tgc/rf/tx1 set gain_target -2.0.

```

Thanks.

Answer: 
TypeScript emits additional metadata with [`emitDecoratorMetadata` compiler option](https://www.typescriptlang.org/docs/handbook/decorators.html#metadata) which is available with `reflect-metadata` polyfill for [metadata proposal](https://rbuckton.github.io/reflect-metadata/).

As the proposal states, there can be design-time metadata emitted for property type, method parameter and method return value types.

Visibility is not among emitted metadata, so it's unavailable for decorated members at runtime.

Since both visibility and decorators are specified by a developer, there wouldn't be much benefit from `@isThisPublic()` decorator, because a developer can specify respective decorators (whatever they are for):

```
class Test {
  @Public test1?: any;
  @Private private test2?: any;
}

```
My project <https://typescript-rtti.org/> makes this possible.

```js
import { reflect } from 'typescript-rtti';

class Test {
  public test1?: any;
  private test2?: any;
  protected test3?: any;
}

expect(reflect(Test).getMethod('test1').isPublic).to.be.true;
expect(reflect(Test).getMethod('test2').isPrivate).to.be.true;
expect(reflect(Test).getMethod('test3').isProtected).to.be.true;

```