Accessing with numeric indices: stringArray[0]: a stringArray[1]: b stringArray[2]: c Accessing with string indices (converted to numbers): stringArray["0"]: a stringArray["1"]: b Accessing array properties: stringArray["length"]: 3 stringArray.length: 3 JavaScript key type conversion: JavaScript converts numeric keys to strings when used as object properties: Object with mixed keys: { '0': 'zero', '1': 'one', '2': 'two', three: 3 } Object.keys(mixed): [ '0', '1', '2', 'three' ] Types of keys: [ 'string', 'string', 'string', 'string' ] Difference between arrays and objects: typeof stringArray: object Array.isArray(stringArray): true typeof mixed: object Array.isArray(mixed): false In TypeScript, these distinctions are important: - Number indexer must be a subtype of string indexer - This is because JavaScript converts number properties to strings - interface MultiIndexArray { [index: number]: string; [key: string]: string; }