=> Object에선 특정 속성값들의 정보가 없기 때문.
interface User {
name: string;
age: number;
gender?: string;
}
let user: User = {
name: 'xx',
age: 30
}
선언시 속성값이 선택으로 됨
grade에 무슨 뜻이 있는건 아님.
=> key와 벨류를 유기적으로 생성할 수 있게 해줌
type Score = 'A' | 'B' | 'C' | 'F';
interface User {
name: string;
age: number;
gender?: string;
readonly birthYear: number;
[grade:number]: Score;
}
let user: User = {
name: 'xx',
age: 30,
birthYear: 1,
}
for (let i=0; i<2; i++) {
user[i] = 'A'
}
console.log(user)
=> 다른 값이 개입하면 에러
interface Add {
(num1: number, num2:number): number;
}
const add: Add = function(x, y) {
return x+y;
}
=> 함수도 이렇게 input, output 타입 특정 가능
interface Car {
color: string;
wheels: number;
start(): void;
}
class Bmw implements Car {
color;
wheels = 4;
constructor(c:string) {
this.color = c;
}
start() {
console.log('go..')
}
}
let a = new Bmw('black');
console.log(a)
a.start();
interface Car {
color: string;
wheels: number;
start(): void;
}
class Bmw implements Car {
color;
wheels = 4;
constructor(c:string) {
this.color = c;
}
start() {
console.log('go..')
}
}
let a = new Bmw('black');
console.log(a)
a.start();
interface Benz extends Car {
door: number;
stop(): void;
}
const benz: Benz = {
color: 'black',
wheels: 4,
door: 5,
start() {
console.log('go');
},
stop() {
console.log('stop');
}
}
console.log(benz)
https://yamoo9.gitbook.io/typescript/interface/extends
interface Car {
color: string;
wheels: number;
start(): void;
}
interface Toy {
name: string;
}
interface ToyCar extends Car, Toy {
price: number;
}