예시
interface Person { name : string; age : number; } const person1 : Person = {name:'js', age:20} const person2 : Person = {name:'js', age:'twenty'} //error - age는 number로 선언되어있다.
예시
interface Person { readonly name : string; age? : number; } const person1 : Person = {name:'js'} person1.name = 'ljs' // error - Person 의 name 은 readonly 속성이기 때문에 값을 변경할 수 없다.
예시2
let readOnlyArr = ReadonlyArr<number> = [1,2,3] readOnlyArr.push(4); //error - readOnlyArr 은 readonly 속성이기 때문에 값을 추가할 수 없다.
예시
interface Person { name : string; [key: string] : string : number; // [key:string]은 key값에 어떤 string 값도 올 수 있다는 의미. } const p1:Person = {name:'js', birthday:'secret', age:20}
예시
interface Print { (name:string, age:number):string; } const getNameAndAge : Print = function (name,age) { return `name: ${name}, age: ${age}`; };
예시1
interface Person { name : string; age : number; } interface Korean extends Person { birth: "KOR"; } // 이 때, Korean 은 아래와 같다. interface Korean { name : string; age : number; birth: "KOR"; }
예시2
interface는 여러개를 확장시킬 수 있다.
예시1 아래에 코드를 더 작성한다고 가정했을 때,interface Developer { job: 'developer'; } interface KorAndDev extends Korean, Developer {} // 이 때, KorAndDev 는 아래와 닽다. interface KorAndDev { name : string; age : number; birth: "KOR"; job: "developer" }
예시
interface Person { name : string; age : number; } interface Developer { name: "string"; skill: "string" } type DevJob = Person & Developer; // 이 때, DevJob을 가진 오브젝트를 만들어보면... cosnt nbcPerson: DevJob { name: "a", age: 20, skill: "ts" }