1/* 2 * Copyright (c) 2023-2025 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16class A { 17 constructor( 18 public readonly x: number, 19 protected y: number, 20 private z: number 21 ) {} 22 23 foo(): void { 24 console.log(this.x + this.y + this.z); 25 } 26} 27 28const a = new A(1, 2, 3); 29console.log(a.x); 30 31class B { 32 public f: number = 10; 33 34 constructor(q: number, public w = 'default', e: boolean, private readonly r: number[] = [1, 2, 3]) { 35 console.log(q, this.w, e, this.r, this.f); 36 } 37} 38 39const b = new B(1, '2', true, []); 40console.log(b.w); 41 42class C { 43 constructor(public a: any) {} // not fixable 44} 45 46class D { 47 constructor(public a: number, private b: {x: string}) {} // not fixable 48} 49 50class E { 51 b: number = 0; 52 c: number = 0; 53 54 constructor(readonly a: number) {} 55} 56 57class F extends E { 58 constructor( 59 readonly aa: number, 60 override b: number, 61 public override c: number 62 ){ 63 super(aa); 64 } 65} 66 67class F2 extends E { 68 constructor(readonly aa: number) { 69 let f2: number = 1; 70 console.log('before super() call'); 71 super(aa); 72 } 73} 74 75class F3 extends E { 76 constructor(readonly aa: number) { 77 super(aa); 78 let f3: number = 1; 79 console.log('after super() call'); 80 } 81} 82 83class F4 extends E { 84 constructor(readonly aa: number) { 85 let f4: number = 1; 86 console.log('before super() call'); 87 super(aa); 88 console.log('after super() call'); 89 let f5: number = 1; 90 } 91} 92 93class G { 94 constructor(a?: number) {} 95} 96 97class G1 { 98 constructor(public a?: number, public b: number) {} 99} 100 101class G2 { 102 constructor(public a?: number, public b?: number) {} 103}