๋ฐ˜์‘ํ˜•

๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ 294

[Kotlin] ์ฝ”ํ‹€๋ฆฐ ํŠน์ • ๋ฌธ์ž์—ด ๊ธฐ์ค€์œผ๋กœ ์ž๋ฅด๋Š” ๋ฐฉ๋ฒ• (split ํ•จ์ˆ˜ ์ด์šฉ)

Intro ์•ˆ๋…•ํ•˜์„ธ์š”. ์ด๋ฒˆ์‹œ๊ฐ„์—๋Š” ์ฝ”ํ‹€๋ฆฐ์—์„œ ํŠน์ • ๋ฌธ์ž์—ด์„ ๊ธฐ์ค€์œผ๋กœ ์ž๋ฅด๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. How to solve the problem ์ฝ”ํ‹€๋ฆฐ์—์„œ ํŠน์ • ๋ฌธ์ž์—ด์„ ๊ธฐ์ค€์œผ๋กœ ์ž๋ฅด๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์–‘ํ•œ๋ฐ์š”, ์ €๋Š” split ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด๋ดค์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ์ŠคํŠธ๋ง์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค. ํ•ด๋‹น ์ŠคํŠธ๋ง์—์„œ split ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ '-' ๋ฌธ์ž์—ด ๊ธฐ์ค€์œผ๋กœ ์ž˜๋ผ์ค๋‹ˆ๋‹ค. fun main() { val string = "kotlin-typescript-javascript" val result = string.split('-'); println(result) println(result[0]) println(result[1]) println(result[2]) } ์œ„ ์ฝ”๋“œ ์‹คํ–‰ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. [kot..

Programming/Kotlin 2023.03.14

[JavaScript] ๊ธด ๋ฌธ์ž์—ด ์ž๋ฅด๊ธฐ, ํŠน์ • ๋ฌธ์ž์—ด ์ˆ˜๊นŒ์ง€ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•

Intro ์•ˆ๋…•ํ•˜์„ธ์š”. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ํŠน์ • ๋ฌธ์ž์—ด ์ˆ˜๊นŒ์ง€ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. How to solve the problem ๊ธด ๋ฌธ์ž์—ด์„ ์ž๋ฅด๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์–‘ํ•œ๋ฐ์š”, ๋ณดํ†ต ์ƒ๋žต (...)์ฒ˜๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ค„๋ฐ”๊ฟˆ์„ ๋ฐฉ์ง€ํ•˜๊ณค ํ•ฉ๋‹ˆ๋‹ค. ์ €์˜ ์ผ€์ด์Šค์˜ ๊ฒฝ์šฐ ํŠน์ • ๋ฌธ์ž์—ด ์ˆ˜๊นŒ์ง€๋งŒ ํ‘œ์‹œํ•˜๊ณ  ์‹ถ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์ด์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ธด ๋ฌธ์ž์—ด์ด ์žˆ๋‹ค๊ณ  ํ•ฉ์‹œ๋‹ค. let str = 'Some very long string'; ํŠน์ • ๋ฌธ์ž์—ด ์ˆ˜๋ณด๋‹ค ํด ๊ฒฝ์šฐ substring์„ ์ด์šฉํ•˜์—ฌ ํ•ด๋‹น ๋ฌธ์ž์—ด ์ˆ˜๊นŒ์ง€ ๋ฌธ์ž์—ด์„ ์ž˜๋ผ์ค๋‹ˆ๋‹ค. if(str.length > 10) str = str.substring(0,10); https://stackoverflow.com/questions/3414..

[React] useState๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ† ๊ธ€ ๋ฒ„ํŠผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ• Button toggle on off

Intro ์•ˆ๋…•ํ•˜์„ธ์š”. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” react ๋ฆฌ์•กํŠธ์—์„œ ํ† ๊ธ€ ๋ฒ„ํŠผ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. How to solve the problem ์ €๋Š” ํ† ๊ธ€ ๋ฒ„ํŠผ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ useState hook์„ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค. useState hook is used to initialize with initial value and function which changes its value on click event handler. ์šฐ์„  ์ฒ˜์Œ ํ† ๊ธ€๋ฒ„ํŠผ์˜ on/off ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” state๋ฅผ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. const [isOff, setIsOff] = useState(true); ์ดํ›„ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•  ๋•Œ๋งˆ๋‹ค, ํ•ด๋‹น state๋ฅผ ์‚ฌ์šฉํ•ด์ค๋‹ˆ๋‹ค. on/off ์ƒํƒœ์— ๋”ฐ๋ผ css class๋„ ๋‹ค๋ฅด๊ฒŒ ์ ์šฉํ•ด์ค„ ..

Framework/React 2023.03.11

[Network] IP์ฃผ์†Œ๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

Intro ์•ˆ๋…•ํ•˜์„ธ์š”. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” IP์ฃผ์†Œ๊ฐ€ ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. IP์ฃผ์†Œ ๋ชจ๋“  ์ปดํ“จํ„ฐ๋Š” IP์ฃผ์†Œ๋ฅผ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. IP์ฃผ์†Œ๋Š” IPv4, IPv6 2๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ IP์ฃผ์†Œ๋ผ๊ณ  ํ•˜๋ฉด IPv4์ฃผ์†Œ๋ฅผ ๋œปํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰ IP ์ฃผ์†Œ๋Š” ์ธํ„ฐ๋„ท ๋˜๋Š” ๋กœ์ปฌ ๋„คํŠธ์›Œํฌ์—์„œ ์žฅ์น˜๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๊ณ ์œ ํ•œ ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค. IP๊ตฌ์„ฑ IP ์ฃผ์†Œ๋Š” ๋งˆ์นจํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ์ผ๋ จ์˜ ์ˆซ์ž์ž…๋‹ˆ๋‹ค. IP ์ฃผ์†Œ๋Š” 4๊ฐœ์˜ ์ˆซ์ž ์ง‘ํ•ฉ์œผ๋กœ ํ‘œํ˜„๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์‹œ ์ฃผ์†Œ๋Š” 196.157.8.23์ž…๋‹ˆ๋‹ค. ์ง‘ํ•ฉ์˜ ๊ฐ ์ˆซ์ž ๋ฒ”์œ„๋Š” 0์—์„œ 255๊นŒ์ง€์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ „์ฒด IP ์ฃผ์†Œ ์ง€์ • ๋ฒ”์œ„๋Š” 0.0.0.0์—์„œ 255.255.255.255๊นŒ์ง€์ž…๋‹ˆ๋‹ค. IP ์ฃผ์†Œ๋Š” ๋ฌด์ž‘์œ„๊ฐ€ ์•„๋‹ˆ๋ฉฐ, ICANN( Internet Corporation for Assign..

์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž์˜ 2023๋…„ 1, 2์›” ํšŒ๊ณ 

Work ๋ฆฌ๋‰ด์–ผ ์„œ๋น„์Šค ๊ฐœ๋ฐœ ํ™ˆ, ๋ฐœ์ „ํ˜„ํ™ฉ, ์†Œ์‹, ๋งˆ์ดํŽ˜์ด์ง€ UI ๋ฐ API ๊ฐœ๋ฐœ์„ ์™„๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์ •๋ณด๋“ค์„ ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๋Š” ๊ฒŒ ์ค‘์š”ํ•ด์„œ ์–ด๋–ค ์ฐจํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ• ๊นŒ ๊ณ ๋ฏผํ–ˆ๋Š”๋ฐ์š”, ๊ธฐ์กด ์‚ฌ์šฉํ•˜๋˜ Apexchart๊ฐ€ UI๋„ ๊ดœ์ฐฎ๊ณ , ์˜ˆ์‹œ๋„ ๋งŽ์•„์„œ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด๋ฒˆ์—๋Š” zustand ์ƒํƒœ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฒ˜์Œ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ API ๋ฅผ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ์ฒ˜์Œ์œผ๋กœ ์ปฌ๋ ‰์…˜ DB ์ถ”๊ฐ€ํ•ด๋ณด๋Š” ์ž‘์—…๋„ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๊ธฐ์กด์— ์ฝ์€ ์†Œ์‹์ผ ๊ฒฝ์šฐ mark ํ‘œ์‹œ์ฒ˜๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์–ด์•ผ ํ–ˆ๋Š”๋ฐ์š”, ๊ธฐ์กด ์ปฌ๋ ‰์…˜์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ง€ํ‘œ๊ฐ€ ์—†๋”๋ผ๊ณ ์š”. ์—ฌ๋Ÿฌ ๊ณ ๋ฏผ์„ ํ•ด๋ณด๊ณ  ๋ฒ ์ŠคํŠธ ๋ฐฉ๋ฒ•์„ ์ ์šฉํ•ด๋ดค์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ๋‚ด์šฉ์€ ๊ฒŒ์‹œ๊ธ€ ์ฝ์Œ(read)/์•ˆ์ฝ์Œ(unread) ํ‘œ์‹œ ์ƒํƒœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ• ํฌ์ŠคํŒ…์—์„œ ํ™•์ธํ• ..

[React] apexcharts legend ๋ฒ”๋ก€ padding ์กฐ์ ˆํ•˜๋Š” ๋ฐฉ๋ฒ•

Intro ์•ˆ๋…•ํ•˜์„ธ์š”. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” apexcharts ์—์„œ legend(๋ฒ”๋ก€) padding์„ ์กฐ์ ˆํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ œ ๊ฒฝ์šฐ ์•„๋ž˜์˜ ์ฐจํŠธ legend ๋ฒ”๋ก€๊ฐ€ ๊ธฐ์ค€ ์ขŒํ‘œ์— ๋น„ํ•ด ๋„ˆ๋ฌด ์™ผ์ชฝ์œผ๋กœ ์น˜์šฐ์ณ์ ธ ์žˆ์–ด์„œ left-padding์œผ๋กœ ํ•ด๊ฒฐํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. First try ์šฐ์„  ์ €๋Š”apexchart lengend ์˜ ์†์„ฑ์— padding ์†์„ฑ ์œ ๋ฌด๊ฐ€ ์žˆ๋Š”์ง€ ๊ฒ€์ƒ‰ํ•ด๋ดค์Šต๋‹ˆ๋‹ค. apexChart ๋‚ด legend ์†์„ฑ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. padding ๊ด€๋ จ ์†์„ฑ์ด ์—†๋Š” ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค. legend: { show: true, showForSingleSeries: false, showForNullSeries: true, showForZeroSeries: true, position: 'bottom'..

Framework/React 2023.03.09

[AWS] ElasticBeanstalk ๋นˆ์Šคํ†ก ์‚ญ์ œ ์˜ค๋ฅ˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• Stack deletion failed: The following resource(s) failed to delete: [AWSEBSecurityGroup]

Intro ์•ˆ๋…•ํ•˜์„ธ์š”. AWS ElasticBeanstalk ๋นˆ์Šคํ†ก์„ ์‚ญ์ œํ•˜๋˜ ๋„์ค‘ ์•„๋ž˜์™€ ๊ฐ™์€ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. Stack deletion failed: The following resource(s) failed to delete: [AWSEBSecurityGroup] Why? AWSEBSecurityGroup ์ด ์‚ญ์ œ๊ฐ€ ์•ˆ๋˜์–ด ๋ฐœ์ƒํ•œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ €๋Š” Security Group ์—์„œ ๋นˆ์Šคํ†ก์—์„œ ์ƒ์„ฑ๋œ ๋ณด์•ˆ๊ทธ๋ฃน์„ ์ˆ˜์ •ํ•œ ์ ์ด ์žˆ๋Š”๋ฐ์š”, ์ˆ˜์ •ํ•œ ๋ณด์•ˆ๊ทธ๋ฃน์ด ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. How to solve the problem ๋ณด์•ˆ๊ทธ๋ฃน์—์„œ ์ˆ˜์ •ํ•œ ๋‚ด์—ญ์„ ์‚ญ์ œํ›„, ๋‹ค์‹œ Beanstalk ํ™˜๊ฒฝ ์ข…๋ฃŒ๋ฅผ ์‹คํ–‰ํ•˜๋‹ˆ, ์˜ค๋ฅ˜ ์—†์ด ํ™˜๊ฒฝ ์‚ญ์ œ๊ฐ€ ์ง„ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์˜ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒ..

Devops/AWS 2023.03.08

[React] div scroll ๋งจ ์œ„๋กœ ์˜ฌ๋ฆฌ๊ธฐ / scroll ์ปจํŠธ๋กค ํ•˜๋Š” ๋ฐฉ๋ฒ• (useRef ์‚ฌ์šฉ)

Intro ์•ˆ๋…•ํ•˜์„ธ์š”. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” React scroll ์Šคํฌ๋กค์„ ์ปจํŠธ๋กคํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. My case ์ €์˜ ๊ฒฝ์šฐ ์ปดํฌ๋„ŒํŠธ ํ™”๋ฉด์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌ์„ฑ๋˜์–ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฒŒ์‹œ๊ธ€ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์žˆ๊ณ , ํŠน์ • ๊ฒŒ์‹œ๊ธ€์„ ํด๋ฆญํ•˜๋Š” ์ˆœ๊ฐ„ ํŠน์ • ๊ฒŒ์‹œ๊ธ€์— ๋Œ€ํ•œ ๋‚ด์šฉ์ด ๋ณด์ด๊ณ , ์•„๋ž˜๋กœ ๋‹ค๋ฅธ ๊ฒŒ์‹œ๊ธ€๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์‹  ๊ฒŒ์‹œ๊ธ€ ๋ชฉ๋ก์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ์‹  ๊ฒŒ์‹œ๊ธ€ ๋ชฉ๋ก ์ค‘ ํ•˜๋‚˜๋ฅผ ํด๋ฆญํ•˜๋ฉด, ๋ณธ๋ฌธ ๋‚ด์šฉ์ด ๋ณ€ํ•˜๋Š” ํ˜•์‹์ž…๋‹ˆ๋‹ค. How to solve the problem 1. ๋Œ€์ƒ div์— ref๋ฅผ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜์˜ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. const postDetailRef = useRef(null); 2. ์ •์˜ํ•œ ref ๊ฐ’์„ div tag์— ํ• ๋‹นํ•ด์ค๋‹ˆ๋‹ค. {postDetail && ( {postDetail.title} {..

Framework/React 2023.03.06

[IT Conference] ๋„ค์ด๋ฒ„ ๊ฐœ๋ฐœ์ž ์ปจํผ๋Ÿฐ์Šค DEVIEW 2023 Day1 ํ›„๊ธฐ

Intro ์•ˆ๋…•ํ•˜์„ธ์š”. ์ด๋ฒˆ 3๋…„๋งŒ์— ๊ฐœ์ตœ๋œ DEVIEW 2023๋…„ ์ปจํผ๋Ÿฐ์Šค๋ฅผ ๋‹ค๋…€์™”์Šต๋‹ˆ๋‹ค. ์ €๋Š” 27์ผ Day 1, 28์ผ Day2 ์‹ ์ฒญ์„ ๋ชจ๋‘ ๋„์ „ํ•ด๋ดค๋Š”๋ฐ์š”, Day2๋Š” ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค. ์ •๋ง ๋น ๋ฅด๊ฒŒ ์˜ˆ์•ฝ์ด ๋๋‚˜๋”๋ผ๊ณ ์š”. (day ์‹ ์ฒญ ํ›„๊ธฐ๊ฐ€ ๊ถ๊ธˆํ•˜์‹œ๋ฉด ์ด ๊ธ€ ์ฐธ๊ณ  ๋ถ€ํƒ๋“œ๋ ค์š”) Register 9:00 - 9:50 ์•„์นจ 9:00 - 9:50 ์‚ฌ์ด์— ๋“ฑ๋ก ์‹œ๊ฐ„์ด์—ฌ์„œ ์ €๋Š” ์‹œ๊ฐ„์— ๋งž์ถฐ์„œ 9:30๋ถ„์ฏค์— ๋ด‰์€์‚ฌ์—ญ์— ๋„์ฐฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ์ด ๋งค์šฐ ๋งŽ๋”๋ผ๊ณ ์š”. ๊ทธ๋ž˜๋„ ๋„ค์ด๋ฒ„ ์˜ˆ์•ฝํ•˜๋Š” ์ค„์€ ์งง์•„์„œ ๋ฐ”๋กœ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ์—ˆ์–ด์š”! ๋“ฑ๋ก ํ›„์—๋Š” ๋ฐ›์€ ๊ธฐ๋…ํ’ˆ์ž…๋‹ˆ๋‹ค. ๋„ค์ด๋ฒ„ ์Šคํ‹ฐ์ปค์™€ ํ‚ค์บก, ์ดˆ์ฝœ๋ ›, ๋ฌผ์ด ๋“ค์–ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ•์˜ ๋“ค์„ ๋•Œ ๋ฌผ์ด ์žˆ์–ด์„œ ๋‹คํ–‰์ด์˜€์–ด์š”. ๋ฐœํ‘œ๋„ ์•ˆํ–ˆ๋Š”๋ฐ, ์™œ ์ด๋ ‡๊ฒŒ ๋ชฉ์ด ๋งˆ๋ฅด๋˜์ง€... ์‹œ๊ฐ„์ด ์‚ด์ง ๋‚จ์•„์„œ ์ด..

[TypeScript] The left-hand side of an assignment expression may not be an optional property access ์˜ค๋ฅ˜ ์›์ธ ๋ฐ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

Intro ์•ˆ๋…•ํ•˜์„ธ์š”. TypeScript ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—์„œ ref๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ scrollTop ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ•˜๋˜ ๋„์ค‘ ์•„๋ž˜์™€ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€์Šต๋‹ˆ๋‹ค someRef?.current?.scrollTop = 0; TS2779: The left-hand side of an assignment expression may not be an optional property access Why? ์ŠคํŽ™ ์ƒ์—์„œ ์˜ต์…”๋„ ์ฒด์ด๋‹๊ณผ ํ• ๋‹น์„ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. The following is not supported, although it has some use cases; see Issue #18 for discussion: optional property assignment: a?.b = c How to solv..

๋ฐ˜์‘ํ˜•