TypeScript의 interface
📘타입 스크립트
객체생성
- 밑에 처럼 user을 object라 정의했을때 user.name을 찍으면 object형식에 name이라는 속성이 없어 에러가 발생한다.
let user : object;
user = {
name : 'xx',
age : 30
}
console.log(user.name) // object에는 특정 속성값에 대한 정보가 없다
인터페이스 생성
-User이라는 인터페이스를 만들고 이를 바탕으로 user이라는 객체를 만든다
interface User{
name : string;
age : number;
}
let user1 : User={
name : 'x',
age : 30
}
user1.age = 10;
user1 .gender = "male"
- 여기서 gender이라는 속성이 없어서 에러가 발생한다
interface User{
name : string;
age : number;
gender : string;
}
let user1 : User={
name : 'x',
age : 30
}
?:
- User에는 gender라는 속성을 추가하였지만 그래도 에러가 발생 user1에 속성이 포함되지 않았기 때문
- 성별을 입력을 해도 되고 안해도 되는 속성으로 하려면 User에
gender? : string;
## readonly
- 또한 성별을 객체생성할때만 할당이 가능하고 그 이후에는 설정을 바꾸기 싫다하면 User에
readonly gender : string;
key:value
- 인터페이스 안에도 key :value를 입력받을수 있게 할 수 있다 User에
[grade: number] : string;
let user1 : User={
name : 'x',
age : 30
1 : 'A',
2 : 'B
}
type 정의
- type을 정의하여 string이나 number을 대체할수있다
type Score = ‘A’ ‘B’;
[grade:number] : Score;
let user1 : User={
name : 'x',
age : 30,
birthYear : 2000 ,
1 : 'A',
2 : 'B'
}
## 인터페이스로 함수 정의
- 인터페이스로 함수를 정의할수 있다.
interface ADD {
(num1:number,num2:number): number;
}
const add:ADD = function(x,y){
return x+y;
}
add(10,20);
// 성인인지 비교하는 함수
interface IsAdult{
(age:number) : boolean;
}
const a3 : IsAdult = (age) =>{
return age>19;
}
a3(33) //true
인터페이스로 클래스 정의
구현
interface Car{
color : string;
wheels : number;
start(): void;
}
class Bmw implements Car{
color: string;
wheels = 4;
constructor(c:string){
this.color=c;
}
start(): void {
console.log('go');
}
}
const b3 = new Bmw('green');
console.log(b3)
b3.start(); // go
확장
//extends
interface Benz extends Car{
door : number;
stop(): void;
}
const benz : Benz={
door : 5,
stop(){
console.log('stop');
},
color : 'black',
wheels : 4,
start(): void {
console.log('go');
}
}