type Score = 'A' | 'B' | 'C' | 'D' ;
interface User {
name : string;
age : number;
gender? : string;
readonly birthYear : number;
[ grade:number ] : Score;
}
let user: User= {
name: 'aaa',
age : 30,
gender : 'female',
birthYear : 1990,
1 : 'A',
2 : 'C'
};
user.gender = "male"
user.birthYear = 1987; //(error) readonly 여서 변경 불가
Interface 로 함수 정의
interface Add{
(num1:number, number2:number):number;
}
const add :Add = function(x, y){
return x + y;
}
add(10, '20') // number가 아니여서 에러
add(10,20) //30
interface IsAudlt {
(age: number):boolean;
}
const a: IsAudlt = function(x){
return x > 19 ;
}
a(30) // true
Interface 로 클래스 정의 및 확장
//Implements && extend
interface Car{
color: string;
wheels: number;
start(): void;
}
interface Benz extends Car {
door : number;
stop() :void;
}
class Bmw implements Car{
color;
wheels = 4;
constructor(c: string){
this.color = c;
}
start(){
console.log('go..')
}
}
const b = new Bmw('blue');
b.start()
const benz :Benz = {
door: 5,
stop(){
console.log('stop...');
},
color: 'green',
wheels: 4,
start(){
console.log('go..')
}
}
여러 Interface 로 확장
interface Car{
color: string;
wheels: number;
start(): void;
}
interface Toy{
name: string;
}
interface ToyCar extends Car, Toy {
price: number;
}
참고한 강좌 : https://www.youtube.com/watch?v=prfgfj03_VA&list=PLZKTXPmaJk8KhKQ_BILr1JKCJbR0EGlx0&index=3
'프로그래밍 > TypeScript' 카테고리의 다른 글
[TS] 유니온 Union Types (0) | 2024.03.06 |
---|---|
[TS] 리터럴 타입 (Literal Types) (0) | 2024.03.06 |
[TS] 함수 - bind 및 오버로드 이용 (0) | 2024.03.06 |
[TS] 함수 (0) | 2024.03.06 |
[TS] 타입스크립트를 사용하는 이유 (0) | 2024.03.05 |