Я хотел бы иметь такую структуру объекта (как я знаю, это невозможно)
const AUTH = {
base: 'auth',
login: {
enter: `${AUTH.base}/login`,
password: `${AUTH.base}/login/password`,
},
}
РЕДАКТИРОВАТЬ: Я также хочу экспортировать объект в виде модуля
Так что ясделал некоторые опыты
Опыт A
const AUTH_BASE = 'auth'
const AUTH_A = {
login: {
enter: `${AUTH_BASE}/login`,
password: `${AUTH_BASE}/login/password`,
}
}
console.log('enter ->', AUTH_A.login.enter)
console.log('recover ->', AUTH_A.login.password)
Опыт A output:
enter -> auth/login
recover -> auth/login/password
Опыт B
const AUTH_B = {
base: 'auth',
login() {
return `${this.base}/login`
},
password() {
return `${this.base}/login/password`
},
}
console.log('enter ->', AUTH_B.login())
console.log('recover ->', AUTH_B.password())
Выход опыта B:
enter -> auth/login
recover -> auth/login/password
Опыт C
const AUTH_C = {
base1: 'auth',
login: {
base2: 'auth????????????????',
enter1: function() {
return `${this.base1}/login`
},
enter2: function() {
return `${this.base2}/login`
},
password: function() {
return `${this.base}/login/password`
},
}
}
console.log('enter 1 ->', AUTH_C.login.enter1())
console.log('enter 2 ->', AUTH_C.login.enter2())
console.log('recover ->', AUTH_C.login.password())
Опыт C вывод:
enter 1 -> undefined/login
enter 2 -> auth????????????????/login
recover -> undefined/login/password
Опыт D
const AUTH_D = {
base: 'auth',
login: {},
}
AUTH_D.login = {
enter: `${AUTH_D.base}/login`,
password: `${AUTH_D.base}/login/password`,
}
console.log('enter ->', AUTH_D.login.enter)
console.log('recover ->', AUTH_D.login.password)
Вывод опыта D:
enter -> auth/login
recover -> auth/login/password
Мой вопрос: есть ли лучший способ добиться желаемого синтаксиса?
repl.it ссылка: https://repl.it/@SandroMiguel/Endpoints-constants-experience