규칙을 위반하지만 않으면 오류가 뜨지 않음.
// 따라서 빈 객체를 넣어도 위반하지 않은 것이라 오류가 뜨지 않음.
// 그래서 위와 같은 경우를 조심해야함. (위반하지 않은 경우에 오류가 뜨지 않기 때문)
// 반드시 입력해야하는 값이 있다면 Korea: number; 이런 식으로 적어줘야함.
index signature를 사용한 경우
[key: string]: number;
index signature를 썼던 경우에는 위의 value 타입은 일치시켜주어야 함.
Korea: number;
// 타입 별칭 -> 타입도 겹쳐서 사용하면 안되지만, 전역말고 스코프 내에서는 다른 범주로 지정될 수 있음.
type User = {
id: number;
name: string;
nickname: string;
birth: string;
bio: string;
location: string;
};
function func() {
type User = {}; //위의 User와는 다르게 적용됨( 스코프 내에서는 다른 범주로 지정될 수 있음.)
}
let user: User = {
id: 1,
name: "이정환",
nickname: "winterlood",
birth: "1997.01.07",
bio: "안녕하세요",
location: "부천시",
};
let user2: User = {
id: 2,
name: "홍길동",
nickname: "winterlood",
birth: "1997.01.07",
bio: "안녕하세요",
location: "부천시",
};
// 인덱스 시그니처 -> 규칙을 위반하지만 않으면 오류가 뜨지 않음.
// 따라서 빈 객체를 넣어도 위반하지 않은 것이라 오류가 뜨지 않음.
// 그래서 위와 같은 경우를 조심해야함. (위반하지 않은 경우에 오류가 뜨지 않기 때문)
// 반드시 입력해야하는 값이 있다면 Korea: number; 이런 식으로 적어줘야함.
type CountryCodes = {
[key: string]: string;
};
let countryCodes: CountryCodes = {
Korea: "ko",
Unitedstate: "us",
UnitedKingdom: "uk",
};
type CountryNumberCodes = {
[key: string]: number; //index signature를 사용한 경우
Korea: number; // index signature를 썼던 경우에는 위의 value 타입은 일치시켜주어야 함.
};
let countryNumberCodes: CountryNumberCodes = {
Korea: 410,
UnitedState: 840,
UnitedKingdom: 826,
};