Entonces, en la interfaz validationRegistry , el paréntesis significa la propiedad de índice, pero ¿cuándo significa [propName]: ['required'] en la función?
interface ValidatorConfig { [property: string]: { [validatableProp: string]: string[]; // ['required', 'positive'] }; } const registeredValidators: ValidatorConfig = {}; function Required(target: any, propName: string) { registeredValidators[target.constructor.name] = { ...registeredValidators[target.constructor.name], [propName]: ['required'] }; } function PositiveNumber(target: any, propName: string) { registeredValidators[target.constructor.name] = { ...registeredValidators[target.constructor.name], [propName]: ['positive'] }; }