#Typescript
#Tuple
Written by Paul
๋ค์ด๊ฐ๋ฉฐ๊ธฐ๋ณธ ์์ด๋์ด1. ํํ ๋น๋2. ๋ง์
๊ตฌํ3. ๋บ์
๊ตฌํ4. ๊น์ด ์ ์ด (์ฌ๊ท ํ์ถ)5. ๋ ์์ฉํ ์ ์๋ ๊ฒ๋ค์ ๋ฆฌ๋ง๋ฌด๋ฆฌ
๋ค์ด๊ฐ๋ฉฐ
์์ infer๋ฅผ ํตํด ๋ด๋ถ ํ์
์ ์ถ์ถํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ดค์ต๋๋ค.
์ด๋ฒ์๋ ํ์
์คํฌ๋ฆฝํธ์ ๋ ๋ค๋ฅธ ํฅ๋ฏธ๋ก์ด ๊ธฐ๋ฒ์ธ tuple counting์ ์์๋ด
๋๋ค.
์ด ๊ธฐ๋ฒ์ ๋ง ๊ทธ๋๋ก ํํ์ ๊ธธ์ด(T['length'])๋ฅผ ์ด์ฉํด ์นด์ดํ
ํ๋ ๋ฐฉ๋ฒ์
๋๋ค.
์ด๊ฑธ ์ ์ฐ๋ฉด ํ์
์คํฌ๋ฆฝํธ์์ ๋ง์
, ๋บ์
๊ฐ์ ์ฐ์ ์ฐ์ฐ์ด๋ ์ฌ๊ท ๊น์ด ์ ์ด ๊ฐ์ ๊ณ ๊ธ ํจํด์ ๊ตฌํํ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ ์์ด๋์ด
[]['length'] = 0
[1]['length'] = 1
[1, 1]['length'] = 2
์ฆ, ํํ์ ์์๋ฅผ ๊ณ์ ์ถ๊ฐํ๋ฉด ๊ธธ์ด๋ฅผ ํตํด ์ ์ ์นด์ดํธ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
1. ํํ ๋น๋
๋จผ์ ํน์ ๊ธธ์ด์ ํํ์ ๋ง๋๋ ์ ํธ๋ฆฌํฐ:
2. ๋ง์ ๊ตฌํ
ํํ์ ํฉ์น๋ฉด ๊ธธ์ด ํฉ = ๋ง์
์ด ๋ฉ๋๋ค.
3. ๋บ์ ๊ตฌํ
๋ถ๋ถ ์งํฉ ํํ์ ์ ๊ฑฐํด์ ๋บ์
๋ ๊ฐ๋ฅํฉ๋๋ค.
4. ๊น์ด ์ ์ด (์ฌ๊ท ํ์ถ)
์ด์ ์ด ์นด์ดํ
๊ธฐ๋ฒ์ infer์ ๊ฒฐํฉํ๋ฉด โ๋ช ๋ฒ์ด๋ ์ฌ๊ทํ ์งโ๋ฅผ ์ ์ดํ ์ ์์ต๋๋ค.
- C์ ๊ธธ์ด๋ฅผ ์นด์ดํฐ๋ก ์ฌ์ฉ
- ๋ชฉํ ๊น์ด(D)์ ๋๋ฌํ๋ฉด ์ฌ๊ท ์ข ๋ฃ
- [..., unknown]์ ๋จ์ํ ๊ธธ์ด๋ฅผ +1 ํ๊ธฐ ์ํ ๋๋ฏธ ๊ฐ
5. ๋ ์์ฉํ ์ ์๋ ๊ฒ๋ค
- ๋น๊ต ์ฐ์ฐ: A < B ๊ฐ์ ๊ฒ๋ BuildTuple์ ์ด์ฉํด ๊ฐ๋ฅ
- ๋ฐฐ์ด ์ฌ๋ผ์ด์ค: ๊ธธ์ด ๊ธฐ๋ฐ์ผ๋ก ๋ถ๋ถ ๋ฐฐ์ด ์ถ์ถ
- ์ ๋๋ฆญ ์์ ์ฅ์น: ๋ฌดํ ์ฌ๊ท ๋ฐฉ์ง
์ ๋ฆฌ
- tuple counting์ ํํ์ ๊ธธ์ด๋ก ์ ์๋ฅผ ํํํ๋ ๊ธฐ๋ฒ
- ์ด๋ฅผ ํตํด:
- ์ฐ์ ์ฐ์ฐ (Add, Subtract)
- ๊น์ด ์ ์ด (GoDeeper ๊ฐ์ ์ฌ๊ท ํ์ถ)
- ๋น๊ต ๋ฐ ๊ธฐํ ์ํ์ ์ฐ์ฐ
์ ํ์
์์ค์์ ๊ตฌํํ ์ ์์
- infer์ ๊ฒฐํฉํ๋ฉด ์ฌ๊ท์ ์ผ๋ก ๋ด๋ถ ํ์ ์ ํ์ํ๋ฉด์๋ ์์ ํ ์ ์ด๊ฐ ๊ฐ๋ฅ
๋ง๋ฌด๋ฆฌ
infer๊ฐ ํ์
์ ๋ด๋ถ๋ฅผ ์ถ์ถํ๋ ๋์ด๋ผ๋ฉด,
tuple counting์ ํ์
์์คํ
์์์ ์๊ฐ(ํ์)์ ์ธ๋ ์๊ณ๋ผ๊ณ ํ ์ ์์ต๋๋ค.
์ด ๋ ๊ฐ์ง๋ฅผ ํฉ์น๋ฉด, TypeScript๋ก ์ ์ ํ์
ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ๋ ฅํ ๊ธฐ๋ฒ๋ค์ ๊ตฌํํ ์ ์์ต๋๋ค. ๐
ย