
함수에서 타입을 정의할 때에는 입력 및 출력 값에 대한 타입을 정의해야 한다.
function sayName(name: string) :string{ return name; }
파라미터 개수만큼 인자를 넘기고 싶지 않을 때 이용하는 방법으로 있어도 되고 없어도 되는 인자에는
?를 삽입하여 표기한다.function sayName(firstName:string, lastName?:string):string { return firstName + lastName; } sayName(hyein); //hyein위의 예시에서 ?를 붙인 lastName은 있어도 되고 없어도 된다.
따라서, 생략이 되어도 에러가 나타나지 않는다.
인터페이스는 객체 타입을 정의할 때 사용하는 문법으로,
객체의 속성과 속성 타입, 함수의 파라미터와 반환 타입, 함
수의 스펙(파라미터 개수, 반환값 여부), 배열과 객체 접근 방식, 클래스 등에 사용된다.
또한 무조건 대문자로 시작해야 한다.
예시로 살펴보자
interface MyFoods { name: string; cost: number; } let banana:MyFoods = { name: 'banana', cost: 7000}
객체가 함수의 파라미터로 정의될 때 사용된다.
예시로 살펴보자interface MyFoods { name: string; cost: number; } function wantToEat(props:MyFoods){ console.log(MyFoods.name) }반환타입도 마찬가지로 객체로 반환될 때 사용된다.
상속은 객체 간 관계를 형성하는 방법이며, 상위 클래스의 내용을 하위 클래스가 물려받아 사용하거나 확장하는 기법을 말한다.
이 때에 예약어는 extends 를 사용!
인터페이스 상속이 되려면, 상위 인터페이스에서 정의된 타입을 사용해야 하며,
상위 인터페이스가 먼저 정의되어야 한다.
예시로 살펴보자interface MyFoods { name: string; cost: number; } interface extends Fruits { from: string; seaseon: string; } interface MyFavorites extends Fruits{ isExpensive: boolean; }
배열을 인덱싱이란, 자바스크립트에서 인덱스를 이용하여 배열의 요소에 접근하는 것을 의미한다. 예시로 살펴보자
interface MyFoods { [index:number] :string; } let myFavorites: MyFoods = ['요거트', '샐러드', '사과']; myFavorites[1] //'샐러드'이때,
index타입을number가 아닌 다른 요소로 정의한다면 어떻게 될까?
원래 배열의 인덱스는 숫자여야 하므로, 에러가 발생한다.
만약 인덱스를 다른 요소인 string 등으로 변경해버리면,
해당 인터페이스는 더 이상 배열 타입으로 사용할 수 없다.
따라서, 배열 타입의 인터페이스는 index가 반드시 number 타입을 가지고 있어야 한다.
객체 인덱싱이란, 키와 값 쌍을 만들어 키 값을 이용해 value(값)을 찾아내는 것을 의미한다.
예시를 살펴보자interface MyFoods { [ whatKind: string ] : string; } const myFavorites: MyFoods = { fresh: 'salad', fruits: 'kiwi', meat: 'ducks' } const favorite = MyFoods['fruits']따라서 객체에 접근할 때에는
객체['속성이름']으로 접근할 수 있다.
정확히 속성 이름을 명시하지 않고 속성 이름의 타입과 속성 값의 타입을 정의하는 문법
계속해서 인터페이스가 추가되어야 할 때 작업의 반복을 막기 위한 작업이다.
예시는 다음과 같다interface MyFoods { [ whatKinds : string ] : stirng; } let favorites: MyFoods = { name: 'yogurt', cost: 6000, whereToBuy: 'market', ... }이렇게 인덱스 시그니처를 정의하면,
정의된 인터페이스로 정의한 객체에 무수히 많은 속성 추가가 가능
그러나, 객체의 속성 이름과 개수가 구체적으로 정의되었다면,
인터페이스 자체에 명시하는 게 더 효과적!
와 !!!!!!!
스장 블로그 마지막으로 들렀는데 말이죠 !!!
아티클 쓰면서 들었던 의문 , 스터디원들 아티클 읽으면서 들었던 의문이 싹 다 해결되는 매직 .......
흑흑 인덱싱 인터페이스 부분 세미나 때부터 집착광공마냥 스장 괴롭혔었는데 ..... 당신 아티클로 모든게 치유되었슴니다 ...
좋은 아티클 그저 감사할 따름 .... 💗