13af6ab5fSopenharmony_ci# Declaring properties on functions is not supported 23af6ab5fSopenharmony_ci 33af6ab5fSopenharmony_ciRule ``arkts-no-func-props`` 43af6ab5fSopenharmony_ci 53af6ab5fSopenharmony_ci**Severity: error** 63af6ab5fSopenharmony_ci 73af6ab5fSopenharmony_ciArkTS does not support declaring properties on functions because there is no 83af6ab5fSopenharmony_cisupport for objects with dynamically changing layout. Function objects follow 93af6ab5fSopenharmony_cithis rule and their layout cannot be changed in runtime. 103af6ab5fSopenharmony_ci 113af6ab5fSopenharmony_ci 123af6ab5fSopenharmony_ci## TypeScript 133af6ab5fSopenharmony_ci 143af6ab5fSopenharmony_ci 153af6ab5fSopenharmony_ci``` 163af6ab5fSopenharmony_ci 173af6ab5fSopenharmony_ci class MyImage { 183af6ab5fSopenharmony_ci // ... 193af6ab5fSopenharmony_ci } 203af6ab5fSopenharmony_ci 213af6ab5fSopenharmony_ci function readImage( 223af6ab5fSopenharmony_ci path: string, callback: (err: any, image: MyImage) => void 233af6ab5fSopenharmony_ci ) 243af6ab5fSopenharmony_ci { 253af6ab5fSopenharmony_ci // ... 263af6ab5fSopenharmony_ci } 273af6ab5fSopenharmony_ci 283af6ab5fSopenharmony_ci function readFileSync(path : string) : number[] { 293af6ab5fSopenharmony_ci return [] 303af6ab5fSopenharmony_ci } 313af6ab5fSopenharmony_ci 323af6ab5fSopenharmony_ci function decodeImageSync(contents : number[]) { 333af6ab5fSopenharmony_ci // ... 343af6ab5fSopenharmony_ci } 353af6ab5fSopenharmony_ci 363af6ab5fSopenharmony_ci readImage.sync = (path: string) => { 373af6ab5fSopenharmony_ci const contents = readFileSync(path) 383af6ab5fSopenharmony_ci return decodeImageSync(contents) 393af6ab5fSopenharmony_ci } 403af6ab5fSopenharmony_ci 413af6ab5fSopenharmony_ci``` 423af6ab5fSopenharmony_ci 433af6ab5fSopenharmony_ci## ArkTS 443af6ab5fSopenharmony_ci 453af6ab5fSopenharmony_ci 463af6ab5fSopenharmony_ci``` 473af6ab5fSopenharmony_ci 483af6ab5fSopenharmony_ci class MyImage { 493af6ab5fSopenharmony_ci // ... 503af6ab5fSopenharmony_ci } 513af6ab5fSopenharmony_ci 523af6ab5fSopenharmony_ci async function readImage( 533af6ab5fSopenharmony_ci path: string, callback: (err: Error, image: MyImage) => void 543af6ab5fSopenharmony_ci ) : Promise<MyImage> 553af6ab5fSopenharmony_ci { 563af6ab5fSopenharmony_ci // In real world, the implementation is more complex, 573af6ab5fSopenharmony_ci // involving real network / DB logic, etc. 583af6ab5fSopenharmony_ci return await new MyImage() 593af6ab5fSopenharmony_ci } 603af6ab5fSopenharmony_ci 613af6ab5fSopenharmony_ci function readImageSync(path: string) : MyImage { 623af6ab5fSopenharmony_ci return new MyImage() 633af6ab5fSopenharmony_ci } 643af6ab5fSopenharmony_ci 653af6ab5fSopenharmony_ci``` 663af6ab5fSopenharmony_ci 673af6ab5fSopenharmony_ci## See also 683af6ab5fSopenharmony_ci 693af6ab5fSopenharmony_ci- Recipe 137: ``globalThis`` is not supported (``arkts-no-globalthis``) 703af6ab5fSopenharmony_ci 713af6ab5fSopenharmony_ci 72