๐Ÿ‘ฉ‍๐Ÿ’ป/TypeScript 3

[TypeScript] ์ ์žฌ์ ์†Œ์— interface์™€ type์„ ์“ฐ๋Š” ๋ฐฉ๋ฒ•๊ณผ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ

๋ช‡ ๊ฐœ์˜ ํ”„๋กœ์ ํŠธ์—์„œ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์“ฐ๊ณ  ๋‚˜์„œ๋ถ€ํ„ฐ๋Š” ์ด์ œ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ด์ „์œผ๋กœ ๋Œ์•„๊ฐ€์ง€ ๋ชปํ•˜๊ณ  ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋˜ ์ฒด๊ณ„์ ์œผ๋กœ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์จ์˜จ ๊ฒŒ ์•„๋‹ˆ๋ผ, ์“ฐ๋Š” ํƒ€์ž…๋งŒ ์“ฐ๊ณ , ๊ทธ๋•Œ ๊ทธ๋•Œ ์—๋Ÿฌ๋ฅผ ํ•ด๊ฒฐํ•ด ๋‚˜๊ฐ€๋ฉด์„œ ์ฒด๋“ํ•œ ๊ฒƒ์ธ์ง€๋ผ ์‹œ๊ฐ„์ด ๋‚˜๋ฉด ์ž˜ ์ •๋ฆฌ๋œ ๋ฌธ์„œ๋“ค์„ ์ฝ์œผ๋ฉด์„œ, ๋ฌธ๋ฒ•์„ ์ตํžˆ๋ ค๊ณ  ํ•œ๋‹ค. React Native๋ฅผ ํ•  ๋•Œ ๊ฐ€์žฅ TS๋ฅผ ๋งŽ์ด ์ผ๋Š”๋ฐ, ์ด๋•Œ๋Š” ๊ฑฐ์˜ interface๋กœ ์ ์ฒ ํ•˜๋‹ค์‹œํ”ผํ–ˆ๋‹ค. type๊ณผ interface๊ฐ€ ๊ฑฐ์˜ ๋น„์Šทํ•˜๋‹ค๋Š” ๊ฒƒ์€ ์•Œ๊ณ  ์žˆ์—ˆ์ง€๋งŒ, ๋”ฑ ๊ฑฐ๊ธฐ๊นŒ์ง€์–ด์„œ ์ด๋ฒˆ ๊ธฐํšŒ์— ์ •๋ฆฌํ•ด๋ดค๋‹ค. Interface interface๋Š” object ํƒ€์ž…์„ ์ •์˜ํ•˜๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด๋‹ค. ์ด๋ฆ„๊ณผ ๋‚˜์ด๋ฅผ ๋ฐ›๋Š” user๋ผ๋Š” ์ด๋ฆ„์˜ ๊ฐ์ฒด ์ •๋ณด๊ฐ€ ์žˆ์„ ๋•Œ ์•„๋ž˜์ฒ˜๋Ÿผ interface๋ฅผ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋‹ค. interfa..

[TypeScript] TS2531 Object is possibly 'null'๊ณผ Optional Chaining Operator(์˜ต์…”๋„ ์ฒด์ด๋‹ ์—ฐ์‚ฐ์ž) (?.)

์ž‘๋…„ ๋ง๋ถ€ํ„ฐ๋Š” ์›น ๊ฐœ๋ฐœ๋ณด๋‹ค๋Š” ์•ฑ ๊ฐœ๋ฐœ์„ ๋” ์—ด์‹ฌํžˆ ํ•˜๋Š” ํ•ด๋‹ค. ๋„ค์ดํ‹ฐ๋ธŒ์— ๋Œ€ํ•œ ์ง€์‹์ด ์—†์–ด์„œ, ๋˜๋„๋ก ๋นจ๋ฆฌ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” MVP ์•ฑ์€ ๋ฆฌ์•กํŠธ ๋„ค์ดํ‹ฐ๋ธŒ+์—‘์Šคํฌ ์Šคํƒ์œผ๋กœ ์‹œ์ž‘ํ•˜๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ, Expo ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ œ๊ณตํ•˜๋Š” expo-constants library ์‚ฌ์šฉ ์ค‘์— ๋งŒ๋‚œ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์—๋Ÿฌ์ด๋‹ค. ๋ฆฌ์•กํŠธ ๋„ค์ดํ‹ฐ๋ธŒ์˜ Aniamted ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•ด backgroundColor๋ฅผ ์ง€์ •ํ•  ๋•Œ ๋ฐœ์ƒํ–ˆ๋Š”๋ฐ, ์ด๋•Œ App.json์— ๋ฏธ๋ฆฌ ์ž‘์„ฑํ•œ ์‹œ์Šคํ…œ ๋ฐฐ๊ฒฝ์ƒ‰์„ ๊ฐ€์ง€๊ณ  ์˜ค๋ ค๊ณ  ํ–ˆ๋‹ค. ์ฃผ์„์„ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์€ ์ฝ”๋“œ์—์„œ ๋ณด๋ฉด ๋ชจ๋“  ๊ฐ์ฒด๋“ค์ด ์ฒด์ด๋‹๋˜์–ด ํ‚ค๋“ค์„ ์ž˜ ๋”ฐ๋ผ๊ฐ€๊ณ  ์žˆ๋Š”๋ฐ, ์—๋Ÿฌ๊ฐ€ ๋‚˜์„œ App.json์œผ๋กœ ๋‹ค์‹œ ๊ฐ€์„œ ํ™•์ธํ•ด๋ดค๋‹ค. "splash": { "image": "./src/assets/images/splash.png"..

[TypeScript] TS2564 Error : Property '~' has no initializer and is not definitely assigned in the constructor

๋งจ ์ฒ˜์Œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ฐฐ์šธ ๋•Œ ๊ฐœ๋…๋งŒ ํ•œ ๋ฒˆ ํ›‘๊ณ  ์ง€๋‚˜๊ฐ”๋˜ TypeScript๋ฅผ ๋‹ค์‹œ ํ•ด๋ณด๊ณ  ์‹ถ์–ด์„œ ์˜ค๋Š˜ ๊ธฐ์ดˆ ๊ฐ•์˜๋“ค์„ ์ญ‰ ์‚ดํŽด๋ดค๋‹ค. Java๋ฅผ ํ•˜๊ณ  ์˜จ ๋‹ค์Œ์— TypeScript๋ฅผ ์ ‘ํ•˜๋‹ˆ ์•„๋ฌด๋ž˜๋„ ์ดํ•ดํ•˜๊ธฐ๊ฐ€ ๋” ์‰ฌ์› ๋‹ค. ์˜ˆ์ œ ์ค‘ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ํด๋ž˜์Šค๋ฅผ ์†Œ๊ฐœํ•˜๋Š” ์ฑ•ํ„ฐ์—์„œ ๋‚œ๋ฐ์—†์ด ts2564 ์—๋Ÿฌ, "Property 'fullName' has no initializer and is not definitely assigned in the constructor"๋ฅผ ๋งŒ๋‚ฌ๋‹ค. ํ˜„์žฌ tsc -v ๋ช…๋ น์–ด๋กœ ์‚ดํŽด๋ณธ ํ˜„์žฌ Version์€ 4.1.3์ด๊ณ , ์ด๊ณณ์„ ์ฐธ๊ณ ํ•ด๋ณด๋‹ˆ, 2.7.2์—๋ถ€ํ„ฐ ๋„์ž…๋œ strict class checking์œผ๋กœ ์ธํ•œ ์˜ค๋ฅ˜๋ผ๊ณ  ๋‚˜์™€ ์žˆ์—ˆ๋‹ค. ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐ ๊ฐ€๋Šฅํ•œ๋ฐ, class..