13af6ab5fSopenharmony_ci#  Interface can not extend interfaces with the same method
23af6ab5fSopenharmony_ci
33af6ab5fSopenharmony_ciRule ``arkts-no-extend-same-prop``
43af6ab5fSopenharmony_ci
53af6ab5fSopenharmony_ci**Severity: error**
63af6ab5fSopenharmony_ci
73af6ab5fSopenharmony_ciIn TypeScript, an interface that extends two other interfaces with the same method
83af6ab5fSopenharmony_cimust declare that method with a combined result type. It is not allowed in
93af6ab5fSopenharmony_ciArkTS because ArkTS does not allow an interface to contain two methods with
103af6ab5fSopenharmony_cisignatures that are  not distinguishable, e.g., two methods that have the same
113af6ab5fSopenharmony_ciparameter lists but different return types.
123af6ab5fSopenharmony_ci
133af6ab5fSopenharmony_ci
143af6ab5fSopenharmony_ci## TypeScript
153af6ab5fSopenharmony_ci
163af6ab5fSopenharmony_ci
173af6ab5fSopenharmony_ci```
183af6ab5fSopenharmony_ci
193af6ab5fSopenharmony_ci    interface Mover {
203af6ab5fSopenharmony_ci        getStatus(): { speed: number }
213af6ab5fSopenharmony_ci    }
223af6ab5fSopenharmony_ci    interface Shaker {
233af6ab5fSopenharmony_ci        getStatus(): { frequency: number }
243af6ab5fSopenharmony_ci    }
253af6ab5fSopenharmony_ci
263af6ab5fSopenharmony_ci    interface MoverShaker extends Mover, Shaker {
273af6ab5fSopenharmony_ci        getStatus(): {
283af6ab5fSopenharmony_ci            speed: number
293af6ab5fSopenharmony_ci            frequency: number
303af6ab5fSopenharmony_ci        }
313af6ab5fSopenharmony_ci    }
323af6ab5fSopenharmony_ci
333af6ab5fSopenharmony_ci    class C implements MoverShaker {
343af6ab5fSopenharmony_ci        private speed: number = 0
353af6ab5fSopenharmony_ci        private frequency: number = 0
363af6ab5fSopenharmony_ci
373af6ab5fSopenharmony_ci        getStatus() {
383af6ab5fSopenharmony_ci            return { speed: this.speed, frequency: this.frequency }
393af6ab5fSopenharmony_ci        }
403af6ab5fSopenharmony_ci    }
413af6ab5fSopenharmony_ci
423af6ab5fSopenharmony_ci```
433af6ab5fSopenharmony_ci
443af6ab5fSopenharmony_ci## ArkTS
453af6ab5fSopenharmony_ci
463af6ab5fSopenharmony_ci
473af6ab5fSopenharmony_ci```
483af6ab5fSopenharmony_ci
493af6ab5fSopenharmony_ci    class MoveStatus {
503af6ab5fSopenharmony_ci        public speed : number
513af6ab5fSopenharmony_ci        constructor() {
523af6ab5fSopenharmony_ci            this.speed = 0
533af6ab5fSopenharmony_ci        }
543af6ab5fSopenharmony_ci    }
553af6ab5fSopenharmony_ci    interface Mover {
563af6ab5fSopenharmony_ci        getMoveStatus(): MoveStatus
573af6ab5fSopenharmony_ci    }
583af6ab5fSopenharmony_ci
593af6ab5fSopenharmony_ci    class ShakeStatus {
603af6ab5fSopenharmony_ci        public frequency : number
613af6ab5fSopenharmony_ci        constructor() {
623af6ab5fSopenharmony_ci            this.frequency = 0
633af6ab5fSopenharmony_ci        }
643af6ab5fSopenharmony_ci    }
653af6ab5fSopenharmony_ci    interface Shaker {
663af6ab5fSopenharmony_ci        getShakeStatus(): ShakeStatus
673af6ab5fSopenharmony_ci    }
683af6ab5fSopenharmony_ci
693af6ab5fSopenharmony_ci    class MoveAndShakeStatus {
703af6ab5fSopenharmony_ci        public speed : number
713af6ab5fSopenharmony_ci        public frequency : number
723af6ab5fSopenharmony_ci        constructor() {
733af6ab5fSopenharmony_ci            this.speed = 0
743af6ab5fSopenharmony_ci            this.frequency = 0
753af6ab5fSopenharmony_ci        }
763af6ab5fSopenharmony_ci    }
773af6ab5fSopenharmony_ci
783af6ab5fSopenharmony_ci    class C implements Mover, Shaker {
793af6ab5fSopenharmony_ci        private move_status : MoveStatus
803af6ab5fSopenharmony_ci        private shake_status : ShakeStatus
813af6ab5fSopenharmony_ci
823af6ab5fSopenharmony_ci        constructor() {
833af6ab5fSopenharmony_ci            this.move_status = new MoveStatus()
843af6ab5fSopenharmony_ci            this.shake_status = new ShakeStatus()
853af6ab5fSopenharmony_ci        }
863af6ab5fSopenharmony_ci
873af6ab5fSopenharmony_ci        public getMoveStatus() : MoveStatus {
883af6ab5fSopenharmony_ci            return this.move_status
893af6ab5fSopenharmony_ci        }
903af6ab5fSopenharmony_ci
913af6ab5fSopenharmony_ci        public getShakeStatus() : ShakeStatus {
923af6ab5fSopenharmony_ci            return this.shake_status
933af6ab5fSopenharmony_ci        }
943af6ab5fSopenharmony_ci
953af6ab5fSopenharmony_ci        public getStatus(): MoveAndShakeStatus {
963af6ab5fSopenharmony_ci            return {
973af6ab5fSopenharmony_ci                speed: this.move_status.speed,
983af6ab5fSopenharmony_ci                frequency: this.shake_status.frequency
993af6ab5fSopenharmony_ci            }
1003af6ab5fSopenharmony_ci        }
1013af6ab5fSopenharmony_ci    }
1023af6ab5fSopenharmony_ci
1033af6ab5fSopenharmony_ci```
1043af6ab5fSopenharmony_ci
1053af6ab5fSopenharmony_ci
106