객체를 만들고 사용할 때 에러가 발생한다.
이유는 user에 object 라고 타입을 명시해 주었지만 객체의 property의 타입까지는 알 수 없는 것이기 때문이다.
interface로 타입을 만들어 주면 된다
let user에 들어 있는 property를 알려주는 에러
let user를 작성해주면 내부의 property를 확인할 수 있다.
타입을 추가할때 있어도 되고 없어도 될때를 지정하고 싶을 때
타입 지정시 ?를 붙혀주면 된다.
그러면 현재 타입을 사용할 때 내부의 값이 있어도 되고 없어도 됨
만약 타입을 수정하지 않도록 사용하고 싶을때는?
타입 지정시 앞에 readonly
를 붙혀준다.
그러면 아래와 같이 수정할 경우 읽기 전용이기 때문에 에러를 발생한다.
interface안에 []
로 묶어서 사용할 수 있음
위의 타입은 number라는 타입에 string을 받는 다는 것으로 학년 별로 모두 optional하게 줄 수 없기 때문에 만든것
3번 처럼 하면 grade의 경우 입렵받는 값이 너무 광범위 하다.
string 타입이기 때문에 A,B,C가 아닌 아무 문자열이 들어와도 에러가 발생하지 않는다.
다음과 같이 type을 선언해주고 그 타입의 문자열들만 받도록 하는 것이다.