1/** 2 * Copyright (c) 2024-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 16interface I { 17 i:int; 18 j:string; 19} 20 21function foo(i:Partial<I>){ 22 if(i.i == undefined){ 23 i.i = 123456789 24 } 25 if(i.j == undefined){ 26 i.j = "abcdefghi" 27 } 28} 29 30function main(){ 31 let partial1:Partial<I> = {i:1234,j:"abcd"}; 32 assertEQ(partial1.i, 1234) 33 assertEQ(partial1.j, "abcd") 34 assertTrue(!(partial1 instanceof I)) 35 36 let partial2:Partial<I> = {i:1234}; 37 assertEQ(partial2.i, 1234) 38 assertEQ(partial2.j, undefined) 39 assertTrue(!(partial2 instanceof I)) 40 41 let partial3:Partial<I> = {}; 42 assertEQ(partial3.i, undefined) 43 assertEQ(partial3.j, undefined) 44 assertTrue(!(partial3 instanceof I)) 45 46 foo(partial1); 47 assertEQ(partial1.i, 1234) 48 assertEQ(partial1.j, "abcd") 49 50 foo(partial2); 51 assertEQ(partial2.i, 1234) 52 assertEQ(partial2.j, "abcdefghi") 53 54 foo(partial3); 55 assertEQ(partial3.i, 123456789) 56 assertEQ(partial3.j, "abcdefghi") 57} 58