Включить скобки () в литералы шаблона?

1

Как включить круглые скобки () в строке при использовании шаблонов?

В настоящее время его продукция:

Test Yes Test

Я ожидаю, что так выйдет с круглыми скобками:

Test (Yes) Test

Код:

let type = "Yes";
let string = 'Test ${type? (type) : ''} Test';
console.log(string);
Теги:

3 ответа

2

Шаблон можно использовать в шаблоне

const type = 'yes';
const string = 'Test ${type? '(${type})' : ''} Test';

console.log(string)
  • 0
    это круто, не знал, что они могут быть вложенными ...
1

Вам нужно указать, что скобки являются частью строки, а не просто порядком операций.

let string = 'Test ${type? "(" + type + ")": ''} Test';

1

Вы можете обернуть весь placeholder:

let type = 'yes';
let string = 'Test (${type? type : ''}) Test';

console.log(string)

Или если вам не нужно включать его, если тип является ложным, тогда вы можете выполнить их с помощью + или использовать вложенный placeholder:

let type = 'Yes';
let string = 'Test ${type ? '(${type})' : ''} Test';

console.log(string)

И просто для удовольствия вы можете написать шаблон Tagged, чтобы сделать его более многоразовым:

function myTag(strings, ...values) {
  let result = '';
  strings.forEach((string, i) => {
    // strings will always be +1 length over values as per the spec
    const value = values[i] ? '(${values[i]})' : ''
    result += string + value;
  });
  return result;
}

const test1 = "Yes";
const result1 = myTag'Test ${test1} Test';
console.log(result1);

const test2 = null;
const result2 = myTag'Test ${test2} Test';
console.log(result2);
  • 1
    () не должно быть включено, если type имеет значение null или не определено.
  • 0
    @ user88432 я обновил свой ответ, чтобы отразить это

Ещё вопросы

Сообщество Overcoder
Наверх
Меню