1/* 2 * Copyright (c) 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 16abstract class C{ 17 field1:number = 100; 18 private field2:string = "some str"; 19} 20 21abstract class C2{ 22 constructor(x:number){} 23 field1:number = 100; 24 field2:string = "some str"; 25} 26 27abstract class C3{ 28 private constructor(){} 29 field1:number = 100; 30 field2:string = "some str"; 31} 32 33function main(){ 34 let x:C = {field1:1000, /* @@ label */field3:2000}; 35 let x2:C = {field1:1000, /* @@ label2 */field2:2000}; 36 let x3:C = {field1: /* @@ label3 */"some str"}; 37 let x4:C2 = /* @@ label4 */{field1:1000, field2:"some str"}; 38 let x5:C3 = /* @@ label5 */{field1:1000, field2:"some str"}; 39} 40 41/* @@@ label Error TypeError: type C has no property named field3 */ 42/* @@@ label2 Error TypeError: Property field2 is not visible here. */ 43/* @@@ label3 Error TypeError: Type '"some str"' is not compatible with type 'double' at property 'field1' */ 44/* @@@ label4 Error TypeError: Type C2 has no parameterless constructor. Initialization with literals is not supported if the type has no parameterless constructor. Declare the parameterless constructor explicitly or remove parametered constructors! */ 45/* @@@ label5 Error TypeError: Signature constructor(): void is not visible here. */ 46