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_civar a: any;
183af6ab5fSopenharmony_civar a: any;
193af6ab5fSopenharmony_ci
203af6ab5fSopenharmony_civar b: number;
213af6ab5fSopenharmony_civar b: number;
223af6ab5fSopenharmony_ci
233af6ab5fSopenharmony_civar c: number | string;
243af6ab5fSopenharmony_civar c: string | number;
253af6ab5fSopenharmony_ci
263af6ab5fSopenharmony_civar d: { a: number, b: string };
273af6ab5fSopenharmony_civar d: { b: string, a: number };
283af6ab5fSopenharmony_ci
293af6ab5fSopenharmony_civar e: (a: number, b: (string | number)[]) => void;
303af6ab5fSopenharmony_civar e: (a: number, b: (string | number)[]) => void;
313af6ab5fSopenharmony_ci
323af6ab5fSopenharmony_civar f: { a: number, b: string } | { a: number[], b?: string };
333af6ab5fSopenharmony_civar f: { a: number, b: string } | { a: number[], b?: string };
343af6ab5fSopenharmony_ci
353af6ab5fSopenharmony_ciinterface interface1 {
363af6ab5fSopenharmony_ci    a: number,
373af6ab5fSopenharmony_ci    b: string,
383af6ab5fSopenharmony_ci}
393af6ab5fSopenharmony_ci
403af6ab5fSopenharmony_ciinterface interface2 {
413af6ab5fSopenharmony_ci    a: number,
423af6ab5fSopenharmony_ci    b: string,
433af6ab5fSopenharmony_ci}
443af6ab5fSopenharmony_ci
453af6ab5fSopenharmony_civar g: interface1;
463af6ab5fSopenharmony_civar g: interface2;
473af6ab5fSopenharmony_ci
483af6ab5fSopenharmony_ciinterface interface3 extends interface1 {
493af6ab5fSopenharmony_ci    c: boolean,
503af6ab5fSopenharmony_ci}
513af6ab5fSopenharmony_ci
523af6ab5fSopenharmony_ciinterface interface4 extends interface2 {
533af6ab5fSopenharmony_ci    c: boolean,
543af6ab5fSopenharmony_ci}
553af6ab5fSopenharmony_ci
563af6ab5fSopenharmony_civar h: interface3;
573af6ab5fSopenharmony_civar h: interface4;
583af6ab5fSopenharmony_ci
593af6ab5fSopenharmony_ciinterface interface5 {
603af6ab5fSopenharmony_ci    (a: number, b: string): number,
613af6ab5fSopenharmony_ci    (a: number, b: string): string,
623af6ab5fSopenharmony_ci    new(a: number[], b: { a: number, b: string }): boolean,
633af6ab5fSopenharmony_ci    new(a: number[], b: { a: number, b: string }): void,
643af6ab5fSopenharmony_ci}
653af6ab5fSopenharmony_ci
663af6ab5fSopenharmony_ciinterface interface6 {
673af6ab5fSopenharmony_ci    (a: number, b: string): number,
683af6ab5fSopenharmony_ci    (a: number, b: string): string,
693af6ab5fSopenharmony_ci    new(a: number[], b: { a: number, b: string }): void,
703af6ab5fSopenharmony_ci    new(a: number[], b: { a: number, b: string }): boolean,
713af6ab5fSopenharmony_ci}
723af6ab5fSopenharmony_ci
733af6ab5fSopenharmony_civar i: interface5;
743af6ab5fSopenharmony_civar i: interface6;
753af6ab5fSopenharmony_ci
763af6ab5fSopenharmony_civar j = function (a: interface6, b: number[]): number {
773af6ab5fSopenharmony_ci    return 123;
783af6ab5fSopenharmony_ci}
793af6ab5fSopenharmony_civar j: (a: interface6, b: number[]) => number;
803af6ab5fSopenharmony_ci
813af6ab5fSopenharmony_civar obj = { a: 1, b: 2, c: 3 };
823af6ab5fSopenharmony_civar k = { d: "foo", e: "bar", ...obj };
833af6ab5fSopenharmony_civar k: { a: number, b: number, c: number, d: string, e: string };
843af6ab5fSopenharmony_ci
853af6ab5fSopenharmony_cifunction func1(a: number, b: string): "foo" {
863af6ab5fSopenharmony_ci    return "foo";
873af6ab5fSopenharmony_ci}
883af6ab5fSopenharmony_cifunction func2(a: string, b: number): true {
893af6ab5fSopenharmony_ci    return true;
903af6ab5fSopenharmony_ci}
913af6ab5fSopenharmony_civar l: typeof func1 | typeof func2;
923af6ab5fSopenharmony_civar l: ((a: number, b: string) => "foo") | ((a: string, b: number) => true)
933af6ab5fSopenharmony_ci
943af6ab5fSopenharmony_civar m: [a: number, b: string, c: boolean];
953af6ab5fSopenharmony_civar m: [number, string, boolean];
963af6ab5fSopenharmony_ci
973af6ab5fSopenharmony_civar n: number[] | [1, 2, 3];
983af6ab5fSopenharmony_civar n: [1, 2, 3] | number[];
993af6ab5fSopenharmony_ci
1003af6ab5fSopenharmony_ciinterface interface7 {
1013af6ab5fSopenharmony_ci    a: number,
1023af6ab5fSopenharmony_ci}
1033af6ab5fSopenharmony_ci
1043af6ab5fSopenharmony_ciinterface interface8 extends interface7 {
1053af6ab5fSopenharmony_ci    a: number,
1063af6ab5fSopenharmony_ci}
1073af6ab5fSopenharmony_ci
1083af6ab5fSopenharmony_ciinterface interface9 {
1093af6ab5fSopenharmony_ci    a: number;
1103af6ab5fSopenharmony_ci}
1113af6ab5fSopenharmony_ci
1123af6ab5fSopenharmony_civar o: interface9;
1133af6ab5fSopenharmony_civar o: interface8;
1143af6ab5fSopenharmony_ci
1153af6ab5fSopenharmony_civar p: { a: number, b: string };
1163af6ab5fSopenharmony_civar p: typeof p;
117