13af6ab5fSopenharmony_ci#  Array literals must contain elements of only inferrable types
23af6ab5fSopenharmony_ci
33af6ab5fSopenharmony_ciRule ``arkts-no-noninferrable-arr-literals``
43af6ab5fSopenharmony_ci
53af6ab5fSopenharmony_ci**Severity: error**
63af6ab5fSopenharmony_ci
73af6ab5fSopenharmony_ciBasically, ArkTS infers the type of an array literal as a union type of its
83af6ab5fSopenharmony_cicontents. However, a compile-time error occurs if there is at least one
93af6ab5fSopenharmony_cielement with a non-inferrable type (e.g. untyped object literal).
103af6ab5fSopenharmony_ci
113af6ab5fSopenharmony_ci
123af6ab5fSopenharmony_ci## TypeScript
133af6ab5fSopenharmony_ci
143af6ab5fSopenharmony_ci
153af6ab5fSopenharmony_ci```
163af6ab5fSopenharmony_ci
173af6ab5fSopenharmony_ci    let a = [{n: 1, s: "1"}, {n: 2, s : "2"}]
183af6ab5fSopenharmony_ci
193af6ab5fSopenharmony_ci```
203af6ab5fSopenharmony_ci
213af6ab5fSopenharmony_ci## ArkTS
223af6ab5fSopenharmony_ci
233af6ab5fSopenharmony_ci
243af6ab5fSopenharmony_ci```
253af6ab5fSopenharmony_ci
263af6ab5fSopenharmony_ci    class C {
273af6ab5fSopenharmony_ci        n: number = 0
283af6ab5fSopenharmony_ci        s: string = ""
293af6ab5fSopenharmony_ci    }
303af6ab5fSopenharmony_ci
313af6ab5fSopenharmony_ci    let a1 = [{n: 1, s: "1"} as C, {n: 2, s : "2"} as C] // a1 is of type "C[]"
323af6ab5fSopenharmony_ci    let a2: C[] = [{n: 1, s: "1"}, {n: 2, s : "2"}]      // ditto
333af6ab5fSopenharmony_ci
343af6ab5fSopenharmony_ci```
353af6ab5fSopenharmony_ci
363af6ab5fSopenharmony_ci## See also
373af6ab5fSopenharmony_ci
383af6ab5fSopenharmony_ci- Recipe 038:  Object literal must correspond to some explicitly declared class or interface (``arkts-no-untyped-obj-literals``)
393af6ab5fSopenharmony_ci- Recipe 040:  Object literals cannot be used as type declarations (``arkts-no-obj-literals-as-types``)
403af6ab5fSopenharmony_ci
413af6ab5fSopenharmony_ci
42