Typescript์ Interface
Interface
์ธํฐํ์ด์ค๋ ํ์ ์ ์ ์ํ ๊ท์น์ ์๋ฏธ
interface User {
โage: number;
โname: string;
}
๋ณ์์ ํจ์์ ํ์ฉํ ์ธํฐํ์ด์ค
var person: User = {
โage: 30,
โname: 'aa'
}
function getUser(user: User) {
โconsole.log(user);
}
์ธ๋ฑ์ฑ
interface StringArray {
โ[index: number]: string;
}
var arr2: StringArray = ['a', 'b', 'c'];
arr[0] = 10 //Error;
๋์ ๋๋ฆฌ ํจํด
interface StringRegexDictionary {
โ[key: string]: RegExp
}
var obj: StringRegexDictionary = {
โcssFile: /\.css$/,
โjsFile: 'a' //Error
}
obj['cssFile'] = /\.css$/;
obj['jsFile'] = 'a' //Error
์ธํฐํ์ด์ค ํ์ฅ
interface Person{
โname: string;
โage: number;
}
interface User extends Person{
โlanguage: string;
}
์คํผ๋ ์ดํฐ
- Union ํ์
์๋ฐ์คํฌ๋ฆฝํธ์ OR ์ฐ์ฐ์์ ๊ฐ์ ์๋ฏธ์ ํ์
Union ํ์ ์ผ๋ก ์ง์ ํ๋ฉด ๊ฐ ํ์ ์ ๊ณตํต๋(๋ณด์ฅ๋) ์์ฑ์๋ง ์ ๊ทผ ๊ฐ๋ฅํฉ๋๋ค.
function askSomeone(someone: Developer2 | Person) {
โconsole.log(someone);
}
- Insersection ํ์
์๋ฐ์คํฌ๋ฆฝํธ์ AND ์ฐ์ฐ์์ ๊ฐ์ ์๋ฏธ์ ํ์
๊ฐ๊ฐ์ ๋ชจ๋ ํ์ ์ด ํฌํจ๋ ๊ฐ์ฒด๋ฅผ ๋๊ธฐ์ง ์์ผ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค.
function askSomeone(someone: Developer & Person) {
โconsole.log(someone);
}
์ ๋ค๋ฆญ
ํ ๊ฐ์ง ํ์ ๋ณด๋ค ์ฌ๋ฌ ๊ฐ์ง ํ์ ์์ ๋์ํ๋ ์ปดํฌ๋ํธ๋ฅผ ์์ฑํ๋๋ฐ ์ฌ์ฉ
์ ๋ค๋ฆญ์ด๋ ํ์ ์ ๋ง์น ํจ์์ ํ๋ผ๋ฏธํฐ์ฒ๋ผ ์ฌ์ฉํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
function logText <T> (text: T):T {
โreturn text;
}
logText<string>('aa');
logText<number>(100);
ํ์ ์ถ๋ก
ํ์ ์คํฌ๋ฆฝํธ๊ฐ ์ฝ๋๋ฅผ ํด์ํ๋ ๊ณผ์
var a = true;
a = 100; //Error - booleanํ์
์ผ๋ก ์ถ๋ก ํ๊ธฐ ๋๋ฌธ์ number๋ฅผ ํ ๋นํ๋ฉด ์๋ฌ!
- ๊ฐ์ฅ ์ ์ ํ ํ์ (Best Common Type):
๋ฐฐ์ด์ ๋ด๊ธด ๊ฐ๋ค์ ์ถ๋ก ํ์ฌ Unionํ์ ์ผ๋ก ๋ฌถ์ด ๋๊ฐ๋ ๊ฒ
var arr = [1, 2, true];
-์ธํฐํ์ด์ค์ ์ ๋ค๋ฆญ์ ์ด์ฉํ ํ์ ์ถ๋ก ๋ฐฉ์
interface Dropdown<T>{
โvalue: T,
โtext: 'String'
}
var items: Dropdown<boolean> {
โvalue: true,
โtext: 'aa'
}
ํ์ ๋จ์ธ
ํ์ ์คํฌ๋ฆฝํธ๊ฐ ํด์ํ๋ ๊ฒ๋ณด๋ค ๋ ํ์คํ ๋ชฉ์ ์ ๊ฐ์ง๊ณ ๊ฐ๋ฐ์๊ฐ ํด๋น ์ฝ๋์ ํ์ ์ ์ง์ ์ง์ ํ๋ ๊ฒ์ ์๋ฏธ
var a;
a = 10;
a = 'string';
var b = a as string;
Dom API ์กฐ์์์ ๋ง์ด ์ฌ์ฉ
//ํ์
์ถ๋ก ์ HTMLDivElementใ
ฃnull๋ก ๋ฐํ
var div = document.querySelector('div') as HTMLDivElement;
div.innerText;
ํ์ ํธํ
ํน์ ํ์ ์ด ๋ค๋ฅธ ํ์ ์ ์ ํธํ๋๋์ง๋ฅผ ์๋ฏธ
-๊ตฌ์กฐ์ ํ์ดํ
์ฝ๋ ๊ตฌ์กฐ ๊ด์ ์์ ํ์ ์ด ์๋ก ํธํ๋๋์ง๋ฅผ ํ๋จํ๋ ๊ฒ
๊ตฌ์กฐ์ ์ผ๋ก ๋ ํฐ ํ์ ์ ์์ ํ์ ์ ํธํํ ์ ์์
interface Developer {
โname: string;
โage: string;
}
interface Person {
โname: string;
}
var developer: Developer;
var person: Person;
developer = person; //Error
person = developer;
Reference
'Language > Typescript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Typescript] Typescript์ ํ์ ๊ณผ ํจ์ (0) | 2022.09.13 |
---|---|
[Typescript] Typescript์ ์ดํด (0) | 2022.09.08 |
๋๊ธ