interface Person {
name:string;
age:number;
greet(phrase:string): void;
}
let user1:Person;
user1 = {name:'헬창개발자', age:2, greet(phrase: string) {
console.log(phrase + ' ' + this.name)
}
};
user1.greet('안녕 난');
interface에는 public이나 private과 같은 modifier는 없지만 readonly는 존재한다.
이는 앞서 배운 readonly개념과 일치한다. 객체가 initialize되면 그 이후로는 변하지 않는다.
물론 interface와 비슷한 type에도 이것은 존재한다.
type Person = {
readonly name:string;
age:number;
greet(phrase:string): void;
}
let user1:Person;
user1 = {name:'헬창개발자', age:2, greet(phrase: string) {
console.log(phrase + ' ' + this.name)
}
};
type AddFn = (a: number, b: number) => number
interface AddFn {
(a:number, b:number): number;
}
let add: AddFn;
add = (n1:number, n2:number) => {
return n1 + n2;
}
type AddFn = (a?: number, b?: number) => number
let add: AddFn;
add = (n1?:number, n2?:number) => {
if (n1 && n2) {
return n1 + n2;
} else {
return 0;
}
}
interface ErrorContainer {
[prop: string]: string;
}
const errorBag : ErrorContainer = {
email: 'Not a valid email',
name: 'Must start with a capital character!'
}