TypeScript ๊ธฐ๋ณธ ํ์ (12๊ฐ์ง)
- Boolean
- Number
- String
- Object
- Array
- Tuple
- Enum
- Any
- void
- Null
- Undefined
- Never
Array
ํ์ ์ด ๋ฐฐ์ด์ธ ๊ฒฝ์ฐ ๊ฐ๋จํ๊ฒ ์๋์ ๊ฐ์ด ์ ์ธ
let arr: number[] = [1,2,3];
let arr: Array<number> = [1,2,3]; //generic ์ฌ์ฉ
Tuple
ํํ์ ๋ฐฐ์ด์ ๊ธธ์ด๊ฐ ๊ณ ์ ๋๊ณ ๊ฐ ์์์ ํ์ ์ด ์ง์ ๋์ด ์๋ ๋ฐฐ์ด ํ์์ ์๋ฏธํ๋ค.
let arr: [string, number] = ['hi',10];
์ด ๋, ์ ์ํ์ง ์์ ํ์ , ์ธ๋ฑ์ค๋ก ์ ๊ทผํ ๊ฒฝ์ฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
Enum
C, Java์ ๊ฐ์ ๋ค๋ฅธ ์ธ์ด์์ ํํ๊ฒ ์ฐ์ด๋ ํ์ ์ผ๋ก ํน์ ๊ฐ(์์)๋ค์ ์งํฉ์ ์๋ฏธ
enum Avengers { Capt, IronMan, Thor }
let hero: Avengers = Avengers.Capt;
// 1. ์ด๋์ ์ธ๋ฑ์ค ๋ฒํธ๋ก๋ ์ ๊ทผ ๊ฐ๋ฅ
let hero: Avengers = Avengers[0];
// 2. ๋ง์ฝ ์ํ๋ค๋ฉด ์ด๋์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉ์ ํธ์๋ก ๋ณ๊ฒฝํด ์ฌ์ฉ ๊ฐ๋ฅ
enum Avengers { Capt == 2, IronMan, Thor }
// => ๋ฐฐ์ด์ ์ธ๋ฑ์ค๊ฐ 2๋ถํฐ ์์!
let hero: Avengers = Avengers[2]; // Capt
let hero: Avengers = Avengers[4]; // Thor
Any
`๋ชจ๋ ํ์ ์ ๋ํด์ ํ์ฉ`ํ๋ค๋ ์๋ฏธ๋ก, ๊ธฐ์กด์ js๋ก ๊ตฌํ๋์ด ์๋ ์น ์๋น์ค ์ฝ๋์ ts๋ฅผ ์ ์ง์ ์ผ๋ก ์ ์ฉํ ๋ ํ์ฉํ๋ฉด ์ข์ ํ์
let str: any = 'hi';
let num: any = 10;
let arr: any = ['a', 2, true];
Void
๋ณ์์๋ `undefined`์ `null`๋ง ํ ๋น**ํ๊ณ , ํจ์์๋ ๋ฐํ ๊ฐ์ ์ค์ ํ ์ ์๋ ํ์
let unuseful: void = undefined;
function notuse(): void {
console.log('sth');
}
Never
ํจ์์ ๋์ ์ ๋ ๋๋ฌํ์ง ์๋๋ค๋ ์๋ฏธ๋ฅผ ์ง๋ ํ์
function neverEnd(): never {
while (true) {
}
}
Typescript์์์ ํจ์
ํ์ ์คํฌ๋ฆฝํธ๋ก ์ ์ํ ์ ์๋ ํ์ 3๊ฐ์ง
- ํจ์์ ํ๋ผ๋ฏธํฐ(๋งค๊ฐ๋ณ์)
- ํจ์์ ๋ฐํ
- ํจ์์ ๊ตฌ์กฐ
ํจ์์ ๊ธฐ๋ณธ์ ์ธ ํ์ ์ ์ธ
function sum(a: number, b: number): number {
return a + b;
}
๊ธฐ์กด ์๋ฐ์คํฌ๋ฆฝํธ ํจ์์ ์ ์ธ ๋ฐฉ์์์ ๋งค๊ฐ๋ณ์์ ํจ์์ ๋ฐํ ๊ฐ์ ํ์ ์ ์ถ๊ฐ
์ด ๋, ํจ์์ ๋ฐํ ๊ฐ์ ํ์ ์ ์ ํ์ง ์์๋๋ `void`๋ผ๋ ์ฌ์ฉ
ํจ์์ ์ธ์
ts์์๋ ํจ์์ ์ธ์๋ฅผ ๋ชจ๋ ํ์ ๊ฐ์ผ๋ก ๊ฐ์ฃผํ๋ค. ๋ฐ๋ผ์, ํจ์์ ๋งค๊ฐ๋ณ์๋ฅผ ์ค์ ํ๋ฉด `undefined`๋ `null`์ด๋ผ๋ ์ธ์๋ก ๋๊ฒจ์ผํ๋ฉฐ ์ปดํ์ผ๋ฌ์์ ์ ์๋ ๋งค๊ฐ๋ณ์ ๊ฐ์ด ๋์ด ์๋์ง ํ์ธํ๋ค. ๋ฌ๋ฆฌ ๋งํ๋ฉด ์ ์๋ ๋งค๊ฐ๋ณ์ ๊ฐ๋ง ๋ฐ์ ์ ์๊ณ ์ถ๊ฐ๋ก ์ธ์๋ฅผ ๋ฐ์ ์ ์๋ค๋ ์๋ฏธ
function sum(a: number, b: number): number {
return a + b;
}
sum(10, 20); // 30
sum(10, 20, 30); // error, too many parameters
sum(10); // error, too few parameters
์ ์๋ ๋งค๊ฐ๋ณ์์ ๊ฐฏ์๋งํผ ์ธ์๋ฅผ ๋๊ธฐ์ง ์์๋ ๋๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ํน์ฑ๊ณผ ๋ฐ๋๋๋ค. ๋ง์ฝ ์ด๋ฌํ ํน์ฑ์ ์ด๋ฆฌ๊ณ ์ถ๋ค๋ฉด `?`๋ฅผ ์ด์ฉํด์ ์๋์ ๊ฐ์ด ์ ์
function sum(a: number, b?: number): number {
return a + b;
}
sum(10, 20); // 30
sum(10, 20, 30); // error, too many parameters
sum(10); // 10
REST ๋ฌธ๋ฒ์ด ์ ์ฉ๋ ๋งค๊ฐ๋ณ์
function sum(a: number, ...nums: number[]): number {
//
const totalOfNums = 0;
for (let key in nums) {
totalOfNums += nums[key];
}
return a + totalOfNums;
}
console.log(sum(1,2,3,4,5,6));
// a = 1, nums = [2,3,4,5,6]
this
ํ์ ์คํฌ๋ฆฝํธ์์ this๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฒ์ ๋ช ์ํ๋ ค๋ฉด ์๋์ ๊ฐ์ ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ค.
function ํจ์๋ช
(this: ํ์
) {
// ...
}
์ฝ๋ฐฑ์์์ this
์์์ ์ดํด๋ณธ ์ผ๋ฐ์ ์ธ ์ํฉ์์์ `this`์๋ ๋ค๋ฅด๊ฒ ์ฝ๋ฐฑ์ผ๋ก ํจ์๊ฐ ์ ๋ฌ๋์์ ๋์ `this`๋ฅผ ๊ตฌ๋ถํด์ค์ผ ํ ๋๊ฐ ์๋ค. ๊ทธ๋ด๋ ์๋์ ๊ฐ์ด ๊ฐ์ ํ ์ ์๋ค.
interface UIElement {
// ์๋ ํจ์์ `this: void` ์ฝ๋๋ ํจ์์ `this` ํ์
์ ์ ์ธํ ํ์๊ฐ ์๋ค๋ ์๋ฏธ์
๋๋ค.
addClickListener(onclick: (this: void, e: Event) => void): void;
}
class Handler {
info: string;
onClick(this: void, e: Event) {
// `this`์ ํ์
์ด void์ด๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์ `this`๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
console.log('clicked!');
}
}
let handler = new Handler();
uiElement.addClickListener(handler.onClick);
Reference
'Language > Typescript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TypeScript] Typescript Interface (0) | 2022.09.14 |
---|---|
[Typescript] Typescript์ ์ดํด (0) | 2022.09.08 |
๋๊ธ