13af6ab5fSopenharmony_ci/* 23af6ab5fSopenharmony_ci * Copyright (c) 2022-2024 Huawei Device Co., Ltd. 33af6ab5fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 43af6ab5fSopenharmony_ci * you may not use this file except in compliance with the License. 53af6ab5fSopenharmony_ci * You may obtain a copy of the License at 63af6ab5fSopenharmony_ci * 73af6ab5fSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 83af6ab5fSopenharmony_ci * 93af6ab5fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 103af6ab5fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 113af6ab5fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 123af6ab5fSopenharmony_ci * See the License for the specific language governing permissions and 133af6ab5fSopenharmony_ci * limitations under the License. 143af6ab5fSopenharmony_ci */ 153af6ab5fSopenharmony_ci 163af6ab5fSopenharmony_ci 173af6ab5fSopenharmony_cifunction func1(a: number): void { 183af6ab5fSopenharmony_ci 193af6ab5fSopenharmony_ci} 203af6ab5fSopenharmony_cifunc1(5); 213af6ab5fSopenharmony_ci 223af6ab5fSopenharmony_cifunction func2(a: number): number { 233af6ab5fSopenharmony_ci return a; 243af6ab5fSopenharmony_ci} 253af6ab5fSopenharmony_ci 263af6ab5fSopenharmony_citype callAbleObj1 = { 273af6ab5fSopenharmony_ci (a: number): number 283af6ab5fSopenharmony_ci} 293af6ab5fSopenharmony_ci 303af6ab5fSopenharmony_cifunction func3(fn: callAbleObj1): number { 313af6ab5fSopenharmony_ci return fn(5); 323af6ab5fSopenharmony_ci} 333af6ab5fSopenharmony_ci 343af6ab5fSopenharmony_civar obj1: callAbleObj1; 353af6ab5fSopenharmony_cifunc1(func2(func3(obj1))); 363af6ab5fSopenharmony_ci 373af6ab5fSopenharmony_cifunction func4(a: number): number { 383af6ab5fSopenharmony_ci a++; 393af6ab5fSopenharmony_ci return a < 0 ? func4(a) : a; 403af6ab5fSopenharmony_ci} 413af6ab5fSopenharmony_ci 423af6ab5fSopenharmony_cifunc4(-5); 433af6ab5fSopenharmony_cifunc4(0); 443af6ab5fSopenharmony_ci 453af6ab5fSopenharmony_cifunction func5(a: number, b: string, ...c) { 463af6ab5fSopenharmony_ci return 5; 473af6ab5fSopenharmony_ci} 483af6ab5fSopenharmony_ci 493af6ab5fSopenharmony_cifunc5(1, "foo"); 503af6ab5fSopenharmony_cifunc5(1, "foo", 2, true, {}); 513af6ab5fSopenharmony_ci 523af6ab5fSopenharmony_cifunction func6(a: any, b?: string[], ...c: number[]) { 533af6ab5fSopenharmony_ci return true; 543af6ab5fSopenharmony_ci} 553af6ab5fSopenharmony_ci 563af6ab5fSopenharmony_cifunc6(2); 573af6ab5fSopenharmony_cifunc6(false, ["foo"]); 583af6ab5fSopenharmony_cifunc6({}, ["foo"], 2, 3, 4); 593af6ab5fSopenharmony_ci 603af6ab5fSopenharmony_civar func7: { (a: number, b: string): number, (...a): string }; 613af6ab5fSopenharmony_civar b: string = func7(); 623af6ab5fSopenharmony_civar c: string = func7(1); 633af6ab5fSopenharmony_civar d: number = func7(1, "foo"); 643af6ab5fSopenharmony_ci 653af6ab5fSopenharmony_civar func8: { (a?: number, ...c): boolean, (a: any, b: string[], ...c: number[]): string, (a: number, b: boolean): number }; 663af6ab5fSopenharmony_civar e: boolean = func8(); 673af6ab5fSopenharmony_civar f: boolean = func8(1); 683af6ab5fSopenharmony_civar g: boolean = func8(2, true); 693af6ab5fSopenharmony_civar h: boolean = func8(2, ["foo", "bar"], {}); 703af6ab5fSopenharmony_civar i: string = func8({}, ["bar"]); 713af6ab5fSopenharmony_civar j: string = func8({}, ["bar"], 3, 4, 5); 723af6ab5fSopenharmony_ci 733af6ab5fSopenharmony_cifunction func9(a: number, b: string): number; 743af6ab5fSopenharmony_cifunction func9(a: string, b: number): number | string; 753af6ab5fSopenharmony_cifunction func9(a: number | string, b?: number | string): number | string | boolean { 763af6ab5fSopenharmony_ci return true; 773af6ab5fSopenharmony_ci} 783af6ab5fSopenharmony_ci 793af6ab5fSopenharmony_civar k: number = func9(1, "foo"); 803af6ab5fSopenharmony_civar l: number | string = func9("bar", 2); 813af6ab5fSopenharmony_ci 823af6ab5fSopenharmony_cifunction func10(a: { x: number, y: string }): number[]; 833af6ab5fSopenharmony_cifunction func10(a: { x: string, y: number }): number[]; 843af6ab5fSopenharmony_cifunction func10(a: { x: number | string }) { 853af6ab5fSopenharmony_ci return [1, 2, 3]; 863af6ab5fSopenharmony_ci} 873af6ab5fSopenharmony_ci 883af6ab5fSopenharmony_civar m: number[] = func10({ x: 1, y: "foo" }); 893af6ab5fSopenharmony_civar m: number[] = func10({ x: "bar", y: 2 }); 90