๋จผ์ Loose typing์ด ๋ฌด์์ธ์ง, ๋์จํ ํ์ดํ์ด ์๋๊ฑด ๋ฌด์์ธ์ง ์ดํดํ๋๊ฒ์ด ์ค์ํ๋ฐ!
loose typing์ ํ์
์์ด ๋ณ์๋ฅผ ์ ์ธํ๋ ๋ฐฉ์์ด๊ณ ,
๋ฐ๋ฉด์ strong typing์ ์ฌ์ฉํ๋ ์ธ์ด๋ ํ์
๊ณผ ํจ๊ป ๋ณ์๋ฅผ ์ ์ธํด์ผ๋ง ํ๋ค.
์ฝ๊ฒ ์์ฝํ๋ฉด ๋ณ์์ ํ์
์ ํ์์ ์ผ๋ก ์ง์ ํ์ง ์์ '๋์จํ ํ์
'์ด๋ผ๊ณ ํ ์ ์๊ณ
๋ณ์์ ์ ์ฅ ๋๋ ๊ฐ์ ํ์
์ ์ธ์ ๋ ์ง ๋ฐ๊ฟ ์ ์๊ธฐ ๋๋ฌธ์ ๋์ ํ์
์ธ์ด๋ผ๊ณ ๋ ๋ถ๋ฆด ์ ์์ต๋๋ค.
/ JavaScript Example (loose typing) /
var a = 13; // Number ์ ์ธ
var b = "thirteen"; // String ์ ์ธ
javascript ์์ ๋ฅผ ๋ณด๋ฉด a,b ๋๋ค var type ์ ํ์ผ๋ก ์ ์ธ ๋๊ณ ์๋ค.
๊ทธ๋ ์ง๋ง ์ด๊ฒ์ด ์ ํ์ด ์๊ฑฐ๋ "var"์ ํ์ด๋ผ๋ ์๋ฏธ๊ฐ ์๋๋ผ๋๋ฐ;;
var ๊ฐ์ const์ ๋ฐ๋๋ก ์ธ์ ๋ ์ง ๋ณํ์ด ๊ฐ๋ฅํ ๋ณ์๋ผ์ ๋์จํ ํ์
์ด๋ผ๊ณ ํ๋๊ฑด๊ฐ?
๊ทธ๋์ ๋ฐ๋ ์์๋ฅผ ๊ฐ์ ธ์๋ดค๋ค.
/ java example (strong typing) /
int a = 13; // int declaration
string b = "thirteen"; // string declaration
Java ์์์์๋ loose typing ๋ฐฉ์๊ณผ๋ ๋ฐ๋๋ก strong typing ์ ํ๊ณ ์๋๋ฐ.
์์ int(=number) ๊ฐ๊ณผ string ๊ฐ์ ์ฃผ๊ณ ์๋ค.
์ํ! type์๋ Number,String,Boolean(true,false),null,undefined ์ด๋ ๊ฒ 5๊ฐ์ง ์ข
๋ฅ๊ฐ ์๋๋ฐ type ์์ด ๋ณ์๋ฅผ ์ ์ธํ๋๊ฒ ์ด๊ฑฐ๊ตฌ๋ !!
์ดํด๊ฐ ๋์ด๋ฒ๋ ธ๋ค!
์ ๊น?
์ด๋ฌํ ํน์ง์ด ๊ฒฐ๊ตญ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ฝ์ ์ด ๋๋ค๋๋ฐ?
์๋ฐ ์คํฌ๋ฆฝํธ๋ ์ปดํ์ผ ๋ ํ ์คํ๋๋๊ฒ์ด ์๋๋ผ ์คํ ๋๋ ์๊ฐ ํ์ค์ฉ ์ฝ์ผ๋ฉฐ (์ธํฐํ๋ฆฌํฐ) ์คํ์ด ๋๋ค๋๋ฐ ์ด๊ฑด ์ฆ , ์ปดํ์ผ ๋๋ ๊ณผ์ ์ด ๋ฐ๋ก ์๊ธฐ ๋๋ฌธ์ ํ์
์ค๋ฅ๋ฅผ ์คํ ์ ์ ์ฒดํฌ ํ ์๊ฐ ์๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์ ํํ ๋ฐ์ํ๋ ์ฌ๋ฐ๋ ์์๋ฅผ ๋ค๊ณ ์๋ค.
๐ค๋ฐฑ์๋ ๊ฐ๋ฐ์: ์ด๋ฒ์ ์ฌ์ฉํ API ๋ช ์ธ์ ํจ๊ป ์ ๋ฌ๋๋ ธ์ต๋๋ค~ ํ์ธ ๋ถํ๋๋ ค์!
params ์์
{
id: number,
name: string,
display: string,
price: string
}
๐๋: ๊ฐ์ฌํฉ๋๋ค, ํ๋ฒ ํ ์คํธ ํด๋ณผ๊ฒ์!
data: {
id: 1,
name: '์ค',
display: 'ํํํ',
price: 25000 // ?!
}
๐(๋ฉ์ฒญํ)๋: ์๋, ์ด๊ฑฐ API๊ฐ ์๋ชป๋ ๊ฒ ๊ฐ์๋ฐ์? ๋ก๊ทธ ํ์ธ ๋ถํ๋๋ ค์ ใ ใ
๐ค๋ฐฑ์๋ ๊ฐ๋ฐ์: ์๋, ๋ช ์ธ ์ ๋๋ก ์ ์ฝ์ด ๋ณด์ จ์ด์?! ๐ก
๊ทธ๋ ๋ค๋ฉด ์ฝ์ ์ ๋ณด์ํ๊ธฐ ์ํด์ ๊ฐ๋ฐ์๊ฐ ํด์ผํ๋ ์ผ์ ๋ฌด์์ผ๊น?
1.์์๋๋ ํ์
์๋ฌ๋ฅผ ์์ธ ์ฒ๋ฆฌ
2. ์๋ฐ์คํฌ๋ฆฝํธ ์ธ์ด์ type ์ถ๊ฐ ๋ ํ์
์คํฌ๋ฆฝํธ์ ์ฌ์ฉ
๋ํ์ ์ผ๋ก ๋๊ฐ์ง๊ฐ ์๋ค.
ํ์
์คํฌ๋ฆฝํธ ?๐๐
์ด๊ฑด ๋ ๋ญ์ง?๐คฆโโ๏ธ๐คฆโโ๏ธ๐คฆโโ๏ธ ๋จธ๋ฆฌ๊ฐ ์ํ๊ธฐ ์์..
์ค๋ช
์ด ํ์ํด~~~
ํ์
์คํฌ๋ฆฝํธ๋ฅผ ์ค๋ช
ํ๊ธฐ ์ํด์ ๋จผ์ ์ธํฐํ๋ฆฌํฐ ์ธ์ดor ์ปดํ์ผ ์ธ์ด๋ฅผ ์ค๋ช
ํด์ผ ํ๋๋ฐ
1.์ธํฐํ๋ฆฌํฐ์ธ์ด
์ธํฐํ๋ฆฌํฐ ์ธ์ด๋ ์์์ฝ๋(ํ๋ก๊ทธ๋๋จธ๊ฐ ์์ฑํ ์์ค์ฝ๋)๋ฅผ ๊ธฐ๊ณ์ด๋ก ๋ณํํ๋ ๊ณผ์ ์์ด ํ์ค ํ์ค ํด์ํ์ฌ ๋ฐ๋ก ๋ช
๋ น์ด๋ฅผ ์คํํ๋ ์ธ์ด๋ฅผ ๋งํฉ๋๋ค.
2.์ปดํ์ผ ์ธ์ด
์ปดํ์ผ ์ธ์ด๋ ์์์ฝ๋(ํ๋ก๊ทธ๋๋จธ๊ฐ ์์ฑํ ์์ค์ฝ๋)๋ฅผ ๋ชจ๋ ๊ธฐ๊ณ์ด๋ก ๋ณํํ ํ์ ๊ธฐ๊ณ(JVM ๊ฐ์ ๊ฐ์ ๋จธ์ )์ ๋ฃ๊ณ ๊ธฐ๊ณ์ด ์ฝ๋๋ฅผ ์คํํฉ๋๋ค.
๐
ํ์
์คํฌ๋ฆฝํธ ์ฅ์ ๋ ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ ์ ํ์
์ฒดํฌ์ ๊ฐ๋ ฅํ ๋ฌธ๋ฒ์ ์ถ๊ฐํ ์ปดํ์ผ ์ธ์ด์ด๊ธฐ ๋๋ฌธ์ ์ปดํ์ผ ๋จ๊ณ์์ ๋ณด๋ค ๋ ๋ง์ ๊ฒ์ ๊ฐ์งํด ์ค๋๋ค.
์คํ ๊ฐ์ง์ ๋ฌธ๋ฒ์ฒดํฌ๋ ๋ฌผ๋ก ์ด๋ฉฐ, ํ์
์ฒดํฌ๊ฐ ์ฌ๋ฐ๋ก ์ด๋ฃจ์ด์ง์ง ์๊ฑฐ๋, ๋ฌด์กฐ๊ฑด null ์ด๋ undefined๋ก ๋จ์ด์ง๋ ๊ฐ์ฒด๋ฅผ ๊ฐ์ง ํด์ค๋๋ค!
๊ทธ๋ ์ง๋ง ํ์
์คํฌ๋ฆฝํธ๋ ๋จ์ ์ด ์๋๋ฐ..
1.์ฌ์ฉํ๊ณ ์ ํ๋ ๋ชจ๋์ install ํ๋ ค๊ณ ํด๋ d.ts ํ์ผ์ ์ ๊ณตํ์ง ์๋๋ค.
2.์๋ฒฝํ์ง ์์ ์ธ์ด์ด๊ธฐ ๋๋ฌธ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ชป์ฐพ๋๋ค..
<์ฐธ๊ณ ๋งํฌ>
(https://lazygay.tistory.com/14?category=1040487)
(https://dzone.com/articles/understanding-loose-typing-jav)
์์ด์ฌ์ดํธ๋ฅผ ๋ฒ์ญํด์ ์ฝ๊ฒ ์ค๋ช
ํด์ค ์ฌ์ดํธ
(https://bestalign.github.io/dev/understanding-loose-typing-in-javascript/)
<์ปดํ์ผ ์ธ์ด,์ธํฐํ๋ฆฌํฐ ์ธ์ด ์ฐธ๊ณ ์ฌ์ดํธ>
hashcode.co.kr/questions/7560/javascript-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%8A%94-%EC%BB%B4%ED%8C%8C%EC%9D%BC%EC%96%B8%EC%96%B4%EC%9D%B8%EA%B0%80%EC%9A%94-%EC%9D%B8%ED%84%B0%ED%94%84%EB%A6%AC%ED%84%B0-%EC%96%B8%EC%96%B4%EC%9D%B8%EA%B0%80%EC%9A%94
<ํ์
์คํฌ๋ฆฝํธ์ ๋ํด์!>
์ถ์ฒ: https://enfanthoon.tistory.com/171 [June Dev Blog:ํฐ์คํ ๋ฆฌ]