Строка Интерполяция
Примечание: На машинопись 1.4, строка интерполяции доступна в машинописном:
var a = "Hello";
var b = "World";
var text = `${a} ${b}`
Это будет компилировать:
var a = "Hello";
var b = "World";
var text = a + " " + b;
Строка Формат
JavaScript String
объект не имеет функции format
. ТипScript не добавляет к собственным объектам, поэтому он также не имеет функции String.format
.
Для машинопись, вам необходимо расширить интерфейс String, а затем вам нужно, чтобы поставлять implementation:
interface String {
format(...replacements: string[]): string;
}
if (!String.prototype.format) {
String.prototype.format = function() {
var args = arguments;
return this.replace(/{(\d+)}/g, function(match, number) {
return typeof args[number] != 'undefined'
? args[number]
: match
;
});
};
}
Вы можете использовать функцию:
var myStr = 'This is an {0} for {0} purposes: {1}';
alert(myStr.format('example', 'end'));
Вы могли также рассмотреть string interpolation (особенность шаблонных строк), которая является функцией ECMAScript 6 - хотя для ее использования в случае использования String.format
вам все равно нужно будет обернуть ее в функцию, чтобы поставьте необработанную строку, содержащую формат, а затем позиционные аргументы. Он чаще используется inline с переменными, которые интерполируются, поэтому вам нужно сопоставить аргументы, чтобы они работали для этого прецедента.
Например, формат строки, как правило, определяется для последующего использования ... который не работает:
// Works
var myFormatString = 'This is an {0} for {0} purposes: {1}';
// Compiler warnings (a and b not yet defines)
var myTemplateString = `This is an ${a} for ${a} purposes: ${b}`;
Так использовать интерполяцию строки, а не формат строки, вы должны использовать:
function myTemplate(a: string, b: string) {
var myTemplateString = `This is an ${a} for ${a} purposes: ${b}`;
}
alert(myTemplate('example', 'end'));
Другой распространенный вариант использования для строк формата - это то, что они используются как общий ресурс. Я еще не нашел способ загрузить строку шаблона из источника данных, не используя eval
.
Почему, на ваш взгляд, 'String.format' существует из коробки? – VisioN
Итак, как я могу добавить String.format? –