indexable example1 - index is <string> or <number>
2woongjae/ts-basic-indexable
interface StringArray {
[index: number]: string;
}
const sa: StringArray = {}; // 옵셔널하다
sa[100] = '백';
interface StringDictionary {
[index: string]: string;
}
const sd: StringDictionary = {}; // 옵셔널하다
sd.hundred = '백';
interface StringArrayDictionary {
[index: number]: string;
[index: string]: string;
}
const sad: StringArrayDictionary = {};
// 당연히 옵셔널하다.
sad[100] = '백';
sad.hundred = '백';
indexable example2 - string index 를 optional property 로 사용
2woongjae/ts-basic-indexable
interface NameAndOptional {
[index: string]: string;
name: string;
}
const optional: NameAndOptional = {
name: '이름' // 필수
};
optional.any = 'any'; // 어떤 프로퍼티도 가능
interface Optional {
[index: string]: string;
// name: number; // (X) 인덱서블 타입이 string 값을 가지기 때문에 number 를 필수로 끌어오면 에러
}