1/* 2 * Copyright (c) 2025 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 16class A { 17 foo(v: string) { console.log("A:" + v) } 18} 19 20class B extends A { 21 foo(v: string) { console.log("B:" + v) } 22} 23 24class C { 25 foo(v: string) { console.log("C:" + v) } 26} 27 28class D extends C {} 29 30function test1(v: A|C) { 31 v.foo("123") 32} 33 34function test2(v: B|C) { 35 v.foo("123") 36} 37 38function test3(v: B|D) { 39 v.foo("123") 40} 41 42test1(new A()) 43test1(new C()) 44test2(new B()) 45test3(new D()) 46