๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • What would life be If we had no courage to attemp anything?
Language/Typescript

[TypeScript] Typescript Interface

by DevIseo 2022. 9. 14.

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

https://www.samsungsds.com/kr/insights/typescript.html

'Language > Typescript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Typescript] Typescript์˜ ํƒ€์ž…๊ณผ ํ•จ์ˆ˜  (0) 2022.09.13
[Typescript] Typescript์˜ ์ดํ•ด  (0) 2022.09.08

๋Œ“๊ธ€