クラスを宣言した後、他のmethodを呼んだ際の値を、
上記クラス変数に代入しようとしています。
(代入というよりPushで値を追加していきたいです。)
- 「他のmethodを呼んだ際の値」が「methodの引数」なのか「methodの返り値」なのか分からなかったので両方書いています
- クラス変数と記載されていますが、ソースコードではインスタンス変数だったのでインスタンス変数とみなして書いています。
メソッドの引数を追加していくもの
typescript
1class Data<T> {
2 public data: T[] = [];
3
4 methodA(arg: T) {
5 this.data.push(arg);
6 }
7}
8
9const data1 = new Data<string>();
10data1.methodA('hello');
11data1.methodA('world');
12console.info(data1.data);
13
14const data2 = new Data<string[]>();
15data2.methodA(['hello']);
16data2.methodA(['world']);
17console.info(data2.data);
18
19const data3 = new Data<[string, number, boolean]>();
20data3.methodA(['hello', 1, true]);
21data3.methodA(['world', 2, false]);
22console.info(data3.data);
メソッドの返り値を追加していくもの
typescript
1abstract class Data<T> {
2 public data: T[] = [];
3 public abstract methodA(...arg: any): T;
4}
5
6class StringData extends Data<string> {
7 methodA(arg1: string, arg2: number) {
8 const result = `Hello ${arg1} ${arg2}`;
9 this.data.push(result);
10 return result;
11 }
12}
13
14const data1 = new StringData();
15data1.methodA('hello', 1);
16data1.methodA('world', 2);
17console.info(data1.data);
18
19class NumberData extends Data<number> {
20 methodA(arg1: number) {
21 const result = arg1 * 2;
22 this.data.push(result);
23 return result;
24 }
25}
26
27const data2 = new NumberData();
28data2.methodA(1);
29data2.methodA(2);
30console.info(data2.data);
31
32class DateData extends Data<Date> {
33 methodA() {
34 const result = new Date();
35 this.data.push(result);
36 return result;
37 }
38}
39
40const data3 = new DateData();
41data3.methodA();
42data3.methodA();
43console.info(data3.data);
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。