1/* 2 * Copyright (c) 2022-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 16interface Mover { 17 move(): void; 18 getStatus(): { speed: number }; 19} 20 21interface Shaker { 22 shake(): void; 23 getStatus(): { frequency: number }; 24} 25 26interface MoverShaker extends Mover, Shaker { 27 getStatus(): { speed: number; frequency: number }; 28} 29 30class C implements MoverShaker { 31 move(): void { 32 console.log("move"); 33 } 34 35 shake(): void { 36 console.log("shake"); 37 } 38 39 getStatus() { 40 const speed = 100; 41 const frequency = 300; 42 return { speed, frequency }; 43 } 44} 45 46const c = new C(); 47c.move(); 48c.shake(); 49 50const st = c.getStatus(); 51console.log(st); 52 53const obj: Object = c; 54 55if (obj && obj.move && obj.shake && obj.getStatus) { 56 const moverShaker = obj as MoverShaker; 57 58 console.log(moverShaker); 59} 60