1/* 2 * Copyright (c) 2021-2024 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 16/*--- 17desc: 05.Generics 18name: 05.generics/callFromAsyncLambda 19tags: [] 20---*/ 21 22type fooAsyncLambda = () => Promise<void> 23 24class Getter { 25 get<T>(args: T): T { 26 return args; 27 } 28 29 get<T>(args: T[]): T[] { 30 return args; 31 } 32} 33 34function main(): void { 35 let getter = new Getter(); 36 let arr: Int[] = [0, 1, 2]; 37 let foo: fooAsyncLambda = async (): Promise<void> => { 38 let str = getter.get<string>("F"); 39 assert str instanceof string; 40 41 let arr2: Int[] = getter.get<Int>(arr); 42 assert arr2 instanceof Object; 43 assert arr2[0] instanceof Int; 44 } 45 await foo(); 46} 47