๐ฅ๐ฅ Typescript ์ ๋ฒ์ ๊ธฐ๋ฅ
3352 ๋จ์ด typescripttutorialproductivityprogramming
Typescript๋ 2021๋ 4์ 1์ผ์ ๋ฒ ํ ๋ฒ์ 4.3์ ๋ฐํํ์ต๋๋ค. ์ด ๋ฒ์ ์ ์ค์นํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
npm install typescript@beta
ํ ํ๋ฆฟ ๋ฌธ์์ด ์ ํ ๊ฐ์ ์ฌํญ
์ ๋ฒ์ ์ ์ํฉ์ ๋ฐ๋ผ ์ ํ์ด ์ง์ ๋ ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด ํํ์์ ๋ํ ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด ์ ํ์ ๋์ ํฉ๋๋ค. ์ด๋ก ์ธํด ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด ๋์ ์ ํ์ ์ ์ถํ ๋ TypeScript๋ ์ด์ ์์ค ์ ํ์ด ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด ์ ํ์ด ๋๋๋ก ํ์ฉํฉ๋๋ค.
๋ค์์ ๊ฐ์ ๋ ํ ๋น ๊ด๊ณ์ ๋ช ๊ฐ์ง ์์ ๋๋ค.
type Color = "red" | "blue";
type Quantity = "one" | "two";
type SeussFish = `${Quantity | Color} fish`;
// same as
// type SeussFish = "one fish" | "two fish"
// | "red fish" | "blue fish";
โฆor match patterns of other string-like types.
declare let s1: `${number}-${number}-${number}`;
declare let s2: `1-2-3`;
// Works!
s1 = s2;
ํญ์ ์ง์คํ ์ฝ์ ํ์ธ
์กฐ๊ฑด๋ฌธ์์ ๊ธฐ๋ค๋ฆฌ๋ ๋๋ฝ์ ๋ํ ์ค๋ฅ ๋ฐ์์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
์ ์ ์ธ๋ฑ์ค ์๋ช
์ธ๋ฑ์ค ์๋ช ์ ์ฌ์ฉํ๋ฉด ์ ํ์ด ๋ช ์์ ์ผ๋ก ์ ์ธํ๋ ๊ฒ๋ณด๋ค ๋ ๋ง์ ์์ฑ์ ๊ฐ์ ์ค์ ํ ์ ์์ต๋๋ค. ์ต์ ๋ฒ์ ์ ์์ธ ์๋ช ์ ์ด์ ์ ์ ์ผ๋ก ์ ์ธ๋ ์ ์์ต๋๋ค.
์์ ๋ช ์ธ์ ์์ฑ
๊ฐ์ ๋ ์๋ ๊ฐ์ ธ์ค๊ธฐ ๋ฌธ, ๋ ์ฝ๊ณ ์์ ์ ์, ์ฌ์ฉ์๊ฐ ๊ฒฝ๋ก๊ฐ ์๋ ๊ฐ์ ธ์ค๊ธฐ ๋ฌธ ์์ฑ์ ์์ํ๋ฉด TypeScript๊ฐ ๊ฐ๋ฅํ ๊ฐ์ ธ์ค๊ธฐ ๋ชฉ๋ก์ ์ ๊ณตํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ์๋ฃ๋ฅผ ์ปค๋ฐํ๋ฉด ์ฌ์ฉ์๊ฐ ์์ฑํ๋ ค๋ ๊ฒฝ๋ก๋ฅผ ํฌํจํ์ฌ ์ ์ฒด ๊ฐ์ ธ์ค๊ธฐ ๋ฌธ์ ์๋ฃํฉ๋๋ค.
๋ค์์ ์ต์ ๋ฒ์ ์ TypeScript๋ฅผ ์ฌ์ฉํ ์๋ ๊ฐ์ ธ์ค๊ธฐ์ ์์ ๋๋ค.
ํ๊ทธ์ ๋ํ ํธ์ง๊ธฐ ์ง์
TypeScript๋ ์ด์ ํ๊ทธ๋ฅผ ์ดํดํ ์ ์์ผ๋ฉฐ ์ฐ๊ฒฐ๋ ์ ์ธ์ ํด๊ฒฐํ๋ ค๊ณ ์๋ํฉ๋๋ค. ์ด๊ฒ์ด ์๋ฏธํ๋ ๋ฐ๋ ํ๊ทธ ๋ด์ ์ด๋ฆ ์๋ก ๋ง์ฐ์ค๋ฅผ ๊ฐ์ ธ๊ฐ ๋น ๋ฅธ ์ ๋ณด๋ฅผ ์ป๊ฑฐ๋ go-to-definition ๋๋ find-all-references์ ๊ฐ์ ๋ช ๋ น์ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
์๋ฅผ ๋ค์ด, ์๋ ์์์ bar in bar ์ ์๋ก ์ด๋ํ ์ ์์ผ๋ฉฐ TypeScript ์ง์ ํธ์ง๊ธฐ๋ bar์ ํจ์ ์ ์ธ์ผ๋ก ์ด๋ํฉ๋๋ค.
/**
* This function depends on {@link bar}
*/
function foo() {
}
function bar() {
}
๊ณต์ฉ์ฒด ์ด๊ฑฐํ์ ์์์ ์ซ์์ ๋น๊ตํ ์ ์์ต๋๋ค.
ํน์ ์ด๊ฑฐํ์ ๋ํ ํด๊ฒฐ๋ ๋ฌธ์ ๋ ๊ตฌ์ฑ์์ด ์๋์ผ๋ก ์ฑ์์ง๊ฑฐ๋ ์ฌ์ํ๊ฒ ์์ฑ๋ ๊ฒฝ์ฐ ํตํฉ ์ด๊ฑฐํ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ ์ด๊ฑฐํ์ ์ ์ฌ์ ์ผ๋ก ๋ํ๋ด๋ ๊ฐ ๊ฐ์ ํธ์ถํ ์ ์์ต๋๋ค.
์ ๋ฒ์ ์์๋ ์ ๋์จ ์ด๊ฑฐํ์ด ์๋ ๋ณ์๊ฐ ์ ๋ ๊ฐ์ ์ ์๋ ์ซ์ ๋ฆฌํฐ๋ด๊ณผ ๋น๊ต๋๋ฉด ์ ํ ๊ฒ์ฌ๊ธฐ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
enum E {
A = 0,
B = 1,
}
function doSomething(x: E) {
// Error! This condition will always return 'false' since the types 'E' and '-1' have no overlap.
if (x === -1) {
// ...
}
}
//As a workaround, you can re-write an annotation to include the appropriate literal type.
// Include -1 in the type, if we're really certain that -1 can come through.
function doSomething(x: E | -1) {
if (x === -1) {
// ...
}
}
//You can also use a type-assertion on the value.
function doSomething(x: E) {
// Use a type asertion on 'x' because we know we're not actually just dealing with values from 'E'.
if ((x as number) === -1) {
// ...
}
}
๋๋ ์ด๊ฑฐํ์ ๋ค์ ์ ์ธํ์ฌ ์ค์ํ์ง ์์ ์ด๋์ ๋ผ์ด์ ๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์ซ์๋ฅผ ํด๋น ์ด๊ฑฐํ์ ํ ๋นํ ์ ์๊ณ ๋น๊ตํ ์ ์๋๋ก ํ ์ ์์ต๋๋ค. enum์ด ๋ช ๊ฐ์ง ์ ์๋ ค์ง ๊ฐ์ ์ง์ ํ๋ ค๋ ๊ฒฝ์ฐ ์ ์ฉํ ์ ์์ต๋๋ค.
enum E {
// the leading + on 0 opts TypeScript out of inferring a union enum.
A = +0,
B = 1,
}
์ ์ฒด ๊ธฐ์ฌ๋ฅผ ์ฝ๊ณ ์ถ๋ค๋ฉด ์ฌ๊ธฐ์์ ์ฒดํฌ์์ํ ์ ์์ต๋๋ค.
ํ๋ณตํ ์ฝ๋ฉ!
์์ธํ ๋ด์ฉ์ ์ฌ๊ธฐ์์ ๊ธฐ์ฌ๋ฅผ ํ์ธํ์ธ์:- Typescript New Version Features
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐ฅ๐ฅ Typescript ์ ๋ฒ์ ๊ธฐ๋ฅ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://dev.to/stacksjar/typescript-new-version-features-opcํ ์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค