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