* 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;