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 를 필수로 끌어오면 에러
}