13af6ab5fSopenharmony_ci#  ``instanceof`` operator is partially supported
23af6ab5fSopenharmony_ci
33af6ab5fSopenharmony_ciRule ``arkts-instanceof-ref-types``
43af6ab5fSopenharmony_ci
53af6ab5fSopenharmony_ci**Severity: error**
63af6ab5fSopenharmony_ci
73af6ab5fSopenharmony_ciIn TypeScript, the left-hand side of an ``instanceof`` expression must be of the type
83af6ab5fSopenharmony_ci``any``, an object type or a type parameter; the result is ``false`` otherwise.
93af6ab5fSopenharmony_ciIn ArkTS, the left-hand side expression may be of any reference type;
103af6ab5fSopenharmony_cia compile-time error occurs otherwise. In addition, the left operand in ArkTS
113af6ab5fSopenharmony_cicannot be a type.
123af6ab5fSopenharmony_ci
133af6ab5fSopenharmony_ci
143af6ab5fSopenharmony_ci## TypeScript
153af6ab5fSopenharmony_ci
163af6ab5fSopenharmony_ci
173af6ab5fSopenharmony_ci```
183af6ab5fSopenharmony_ci
193af6ab5fSopenharmony_ci    class X {
203af6ab5fSopenharmony_ci        // ...
213af6ab5fSopenharmony_ci    }
223af6ab5fSopenharmony_ci
233af6ab5fSopenharmony_ci    let a = (new X()) instanceof Object // true
243af6ab5fSopenharmony_ci    let b = (new X()) instanceof X      // true
253af6ab5fSopenharmony_ci
263af6ab5fSopenharmony_ci    let c = X instanceof Object // true, left operand is a type
273af6ab5fSopenharmony_ci    let d = X instanceof X      // false, left operand is a type
283af6ab5fSopenharmony_ci
293af6ab5fSopenharmony_ci```
303af6ab5fSopenharmony_ci
313af6ab5fSopenharmony_ci## ArkTS
323af6ab5fSopenharmony_ci
333af6ab5fSopenharmony_ci
343af6ab5fSopenharmony_ci```
353af6ab5fSopenharmony_ci
363af6ab5fSopenharmony_ci    class X {
373af6ab5fSopenharmony_ci        // ...
383af6ab5fSopenharmony_ci    }
393af6ab5fSopenharmony_ci
403af6ab5fSopenharmony_ci    let a = (new X()) instanceof Object // true
413af6ab5fSopenharmony_ci    let b = (new X()) instanceof X      // true
423af6ab5fSopenharmony_ci
433af6ab5fSopenharmony_ci    let c = X instanceof Object // Compile-time error, left operand is a type
443af6ab5fSopenharmony_ci    let d = X instanceof X      // Compile-time error, left operand is a type
453af6ab5fSopenharmony_ci
463af6ab5fSopenharmony_ci```
473af6ab5fSopenharmony_ci
483af6ab5fSopenharmony_ci
49