/* * Copyright (c) 2022-2024 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ var a: any; var a: any; var b: number; var b: number; var c: number | string; var c: string | number; var d: { a: number, b: string }; var d: { b: string, a: number }; var e: (a: number, b: (string | number)[]) => void; var e: (a: number, b: (string | number)[]) => void; var f: { a: number, b: string } | { a: number[], b?: string }; var f: { a: number, b: string } | { a: number[], b?: string }; interface interface1 { a: number, b: string, } interface interface2 { a: number, b: string, } var g: interface1; var g: interface2; interface interface3 extends interface1 { c: boolean, } interface interface4 extends interface2 { c: boolean, } var h: interface3; var h: interface4; interface interface5 { (a: number, b: string): number, (a: number, b: string): string, new(a: number[], b: { a: number, b: string }): boolean, new(a: number[], b: { a: number, b: string }): void, } interface interface6 { (a: number, b: string): number, (a: number, b: string): string, new(a: number[], b: { a: number, b: string }): void, new(a: number[], b: { a: number, b: string }): boolean, } var i: interface5; var i: interface6; var j = function (a: interface6, b: number[]): number { return 123; } var j: (a: interface6, b: number[]) => number; var obj = { a: 1, b: 2, c: 3 }; var k = { d: "foo", e: "bar", ...obj }; var k: { a: number, b: number, c: number, d: string, e: string }; function func1(a: number, b: string): "foo" { return "foo"; } function func2(a: string, b: number): true { return true; } var l: typeof func1 | typeof func2; var l: ((a: number, b: string) => "foo") | ((a: string, b: number) => true) var m: [a: number, b: string, c: boolean]; var m: [number, string, boolean]; var n: number[] | [1, 2, 3]; var n: [1, 2, 3] | number[]; interface interface7 { a: number, } interface interface8 extends interface7 { a: number, } interface interface9 { a: number; } var o: interface9; var o: interface8; var p: { a: number, b: string }; var p: typeof p;