class A<T> {
  a:T;

  constructor(a:T) {
     this.a = a;
  }

  value():T {
    return this.a;
  }
}

let a_boolean = new A<boolean>(true);

let a_number = new A<number>(1);
let a_string = new A<string>("1");

console.log(a_number.value()+1);
console.log(a_string.value()+1);


