์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Redux
- react
- ๋ด์ผ๋ฐฐ์์บ ํ
- native
- ๋ฆฌ์กํธ
- ๊ฐ๋ฐ์
- NEXT
- Firebase
- ์ฝ๋ฉ
- ์๊ณ ๋ฆฌ์ฆ
- PROJECT
- ๋ณ์
- API
- ํ๋ก ํธ์๋
- trainning
- ํ์
- JavaScript
- ์๋ฌ
- ํจ์
- ์จ๋ผ์ธ
- ํ๋ก์ ํธ
- ๋ถํธ์บ ํ
- type
- rn
- ํ์ค
- JS
- wil
- ๋ด์ผ๋ฐฐ์
- ์๋ฐ์คํฌ๋ฆฝํธ
- K-Digital
Archives
- Today
- Total
Frontend ๊ฐ๋ฐ์ - hyo.loui
ํ์ ์คํฌ๋ฆฝํธ - interface extension(์ธํฐํ์ด์ค ํ์ฅ) ๋ณธ๋ฌธ
Typescript
ํ์ ์คํฌ๋ฆฝํธ - interface extension(์ธํฐํ์ด์ค ํ์ฅ)
hyo.loui 2023. 1. 19. 16:10
๐ฏ๋ชฉ์ :
TS Interface extension(์ธํฐํ์ด์ค ํ์ฅ), ์ ๋ฆฌ ๋ฐ ๋ณต์ต
1. ์ธํฐํ์ด์ค ํ์ฅ
ํ์ ๋ณ์นญ๊ณผ ์ธํฐํ์ด์ค์ ์ฐจ์ด์ ์ ํ์ ์ ํ์ฅ ๊ฐ๋ฅ ์ฌ๋ถ์ด๋ค.
์ธํฐํ์ด์ค๋ ํ์ฅ์ด ๊ฐ๋ฅํ๋ฐ ํ์ ๋ณ์นญ์ ํ์ฅ์ด ๋ถ๊ฐ๋ฅํ๋ค.
์ด ๋๋ฌธ์, type ๋ณด๋ค๋ interface๋ก ์ ์ธํด์ ์ฌ์ฉํ๋ ๊ฒ์ ์ถ์ฒํ๋ค.
๋ฐฉ๋ฒ์ ๋๊ฐ์ง ์ด๋ค
1. extends
interface ์๋ก์ด ์ธํฐํ์ด์ค๋ช + extends + ๋ถ์ผ ์ธํฐํ์ด์ค๋ช
// interface extenstion
interface Person {
name: string;
age: number;
}
interface Korea extends Person {
birth: "korea";
}
// vv ์๋ ๋ด์ฉ๊ณผ ๋์ผํ๋ค
interface Korean {
name: string;
age: number;
birth: "korea";
}
2. ์ ์ธ์ ํ์ฅ
interface ์ธํฐํ์ด์ค๋ช ์ ์ฌ์ ์ธ ํ๋ ๊ฒ
interface teset {
title: string;
}
interface teset {
ts: number;
}
// ๊ฐ์ interface ๋ช
์ผ๋ก teset๋ฅผ ๋ค์ ๋ง๋ ๋ค๋ฉด, ์๋์ผ๋ก ํ์ฅ์ด ๋๋ค.
const text: teset = {
title: "header",
ts: 12,
};
console.log("๐๐ text", text); // ๐๐ text { title: 'header', ts: 12 }
2. ์ธํฐํ์ด์ค ํ์ฅ ํ์ฉ ํ๊ธฐ
interface Korean {
name: string;
age: number;
birth: "korea";
}
interface Developer {
job: "developer";
}
interface KorandDev extends Korean, Developer {
// ํ์
์ ์ ์ธํ์ง ์์๋ ์๋์ฒ๋ผ ๋ค์ด์ค๊ฒ ๋๋ค
// name: string;
// age: number;
// birth: "korea";
// job: "developer";
}
const test0: KorandDev = {
name: "์นํจ",
age: 27,
birth: "korea",
job: "developer",
};
console.log("๐๐ test0", test0);
//๐๐ test0 { name: '์นํจ', age: 27, birth: 'korea', job: 'developer' }
3. intersection Type: ์ฌ๋ฌ ํ์ ์ ๋ชจ๋ ๋ง์กฑํ๋ ํ๋์ ํ์
// intersection type
interface Person {
name: string;
age: number;
}
interface Develop {
name: string;
skill: string;
}
type Devjob = Person & Develop;
const abcPerson: Devjob = {
name: "john",
age: 12,
skill: "html",
};
console.log("๐๐ abcPerson", abcPerson);
์ต์ข ์ ๋ฆฌ
- ํ์ ๋ณ์นญ๊ณผ ์ธํฐํ์ด์ค์ ๊ฐ์ฅํฐ ์ฐจ์ด์ ์ ํ์ฅ ๊ฐ๋ฅ ์ฌ๋ถ์ด๋ค.
- type ๋ณด๋ค๋ interface๋ก ์ ์ธํด์ ์ฌ์ฉํ๋ ๊ฒ์ ์ถ์ฒ.
- ํ์ฅ ๋ฐฉ๋ฒ์ [ extends ํ์ฉ, ์ ์ธ์ ํ์ฅ ] 2๊ฐ์ง๋ก ๋ถ๋ฅ๋๋ค.
- intersection Type ์ ์ฌ์ฉํ ๋ ์ค๋ณต๋๋ ์์ฑ์ด ์์ด๋ ๋๋ค.
'Typescript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ์ ์คํฌ๋ฆฝํธ - ํ์ ์ถ๋ก (Type Inference) (0) | 2023.01.20 |
---|---|
ํ์ ์คํฌ๋ฆฝํธ - Generic (์ ๋ค๋ฆญ) (0) | 2023.01.19 |
ํ์ ์คํฌ๋ฆฝํธ - interface (์ธํฐํ์ด์ค) (0) | 2023.01.18 |
ํ์ ์คํฌ๋ฆฝํธ - Type Alias (ํ์ ๋ณ์นญ) (0) | 2023.01.18 |
ํ์ ์คํฌ๋ฆฝํธ - Union (์ ๋์จ) ํ์ (0) | 2023.01.17 |