13af6ab5fSopenharmony_ci#  Strict type checking is enforced
23af6ab5fSopenharmony_ci
33af6ab5fSopenharmony_ciRule ``arkts-strict-typing``
43af6ab5fSopenharmony_ci
53af6ab5fSopenharmony_ci**Severity: error**
63af6ab5fSopenharmony_ci
73af6ab5fSopenharmony_ciType checker in ArkTS is not optional, the code must be explicitly and
83af6ab5fSopenharmony_cicorrectly types to be compiled and run. When porting from the standard TypeScript,
93af6ab5fSopenharmony_citurn on the following flags: ``noImplicitReturns``, ``strictFunctionTypes``,
103af6ab5fSopenharmony_ci``strictNullChecks``, ``strictPropertyInitialization``.
113af6ab5fSopenharmony_ci
123af6ab5fSopenharmony_ci
133af6ab5fSopenharmony_ci## TypeScript
143af6ab5fSopenharmony_ci
153af6ab5fSopenharmony_ci
163af6ab5fSopenharmony_ci```
173af6ab5fSopenharmony_ci
183af6ab5fSopenharmony_ci    class C {
193af6ab5fSopenharmony_ci        n: number // Compile-time error only with strictPropertyInitialization
203af6ab5fSopenharmony_ci        s: string // Compile-time error only with strictPropertyInitialization
213af6ab5fSopenharmony_ci    }
223af6ab5fSopenharmony_ci
233af6ab5fSopenharmony_ci    // Compile-time error only with noImplicitReturns
243af6ab5fSopenharmony_ci    function foo(s: string): string {
253af6ab5fSopenharmony_ci        if (s != "") {
263af6ab5fSopenharmony_ci            console.log(s)
273af6ab5fSopenharmony_ci            return s
283af6ab5fSopenharmony_ci        } else {
293af6ab5fSopenharmony_ci            console.log(s)
303af6ab5fSopenharmony_ci        }
313af6ab5fSopenharmony_ci    }
323af6ab5fSopenharmony_ci
333af6ab5fSopenharmony_ci    let n: number = null // Compile-time error only with strictNullChecks
343af6ab5fSopenharmony_ci
353af6ab5fSopenharmony_ci```
363af6ab5fSopenharmony_ci
373af6ab5fSopenharmony_ci## ArkTS
383af6ab5fSopenharmony_ci
393af6ab5fSopenharmony_ci
403af6ab5fSopenharmony_ci```
413af6ab5fSopenharmony_ci
423af6ab5fSopenharmony_ci    class C {
433af6ab5fSopenharmony_ci        n: number = 0
443af6ab5fSopenharmony_ci        s: string = ""
453af6ab5fSopenharmony_ci    }
463af6ab5fSopenharmony_ci
473af6ab5fSopenharmony_ci    function foo(s: string): string {
483af6ab5fSopenharmony_ci        console.log(s)
493af6ab5fSopenharmony_ci        return s
503af6ab5fSopenharmony_ci    }
513af6ab5fSopenharmony_ci
523af6ab5fSopenharmony_ci    let n1: number | null = null
533af6ab5fSopenharmony_ci    let n2: number = 0
543af6ab5fSopenharmony_ci
553af6ab5fSopenharmony_ci```
563af6ab5fSopenharmony_ci
573af6ab5fSopenharmony_ci## See also
583af6ab5fSopenharmony_ci
593af6ab5fSopenharmony_ci- Recipe 008:  Use explicit types instead of ``any``, ``unknown`` (``arkts-no-any-unknown``)
603af6ab5fSopenharmony_ci- Recipe 146:  Switching off type checks with in-place comments is not allowed (``arkts-strict-typing-required``)
613af6ab5fSopenharmony_ci
623af6ab5fSopenharmony_ci
63