13af6ab5fSopenharmony_ci#  Conditional types are not supported
23af6ab5fSopenharmony_ci
33af6ab5fSopenharmony_ciRule ``arkts-no-conditional-types``
43af6ab5fSopenharmony_ci
53af6ab5fSopenharmony_ci**Severity: error**
63af6ab5fSopenharmony_ci
73af6ab5fSopenharmony_ciArkTS does not support conditional type aliases. Introduce a new type with
83af6ab5fSopenharmony_ciconstraints explicitly, or rewrite logic using ``Object``. The keyword
93af6ab5fSopenharmony_ci``infer`` is not supported.
103af6ab5fSopenharmony_ci
113af6ab5fSopenharmony_ci
123af6ab5fSopenharmony_ci## TypeScript
133af6ab5fSopenharmony_ci
143af6ab5fSopenharmony_ci
153af6ab5fSopenharmony_ci```
163af6ab5fSopenharmony_ci
173af6ab5fSopenharmony_ci    type X<T> = T extends number ? T : never
183af6ab5fSopenharmony_ci
193af6ab5fSopenharmony_ci    type Y<T> = T extends Array<infer Item> ? Item : never
203af6ab5fSopenharmony_ci
213af6ab5fSopenharmony_ci```
223af6ab5fSopenharmony_ci
233af6ab5fSopenharmony_ci## ArkTS
243af6ab5fSopenharmony_ci
253af6ab5fSopenharmony_ci
263af6ab5fSopenharmony_ci```
273af6ab5fSopenharmony_ci
283af6ab5fSopenharmony_ci    // Provide explicit constraints within type alias
293af6ab5fSopenharmony_ci    type X1<T extends number> = T
303af6ab5fSopenharmony_ci
313af6ab5fSopenharmony_ci    // Rewrite with Object. Less type control, need more type checks for safety
323af6ab5fSopenharmony_ci    type X2<T> = Object
333af6ab5fSopenharmony_ci
343af6ab5fSopenharmony_ci    // Item has to be used as a generic parameter and need to be properly
353af6ab5fSopenharmony_ci    // instantiated
363af6ab5fSopenharmony_ci    type YI<Item, T extends Array<Item>> = Item
373af6ab5fSopenharmony_ci
383af6ab5fSopenharmony_ci```
393af6ab5fSopenharmony_ci
403af6ab5fSopenharmony_ci
41