Я пытаюсь переписать некоторый код моего JavaScript в TypeScript. Некоторые из этого кода имеют ссылки на расширение, которое я добавил к прототипу строкового объекта.Расширение базовых типов в TypeScript, ошибка: «_this is not defined ...»
String.prototype.format = function() {
var formatted = this;
for (var i = 0; i < arguments.length; i++) {
formatted = formatted.replace(
RegExp("\\{" + i + "\\}", 'g'), arguments[i].toString());
}
return formatted;
};
Однако добавление этого сценария типа было довольно сложным.
Я видел примеры, когда вы объявляете расширение базового интерфейса, а затем назначаете функцию прототипу в соответствии с интерфейсом и предоставляете свою функциональность. Как и ...
interface String {
showString:() => string;
}
String.prototype.showString =(): string {
return this;
};
Кроме этого ошибки, потому что «_this не определен ...»
Другие вещи, я пытался это создать новый класс для расширения строки ...
export class MoreString extends string {
}
Однако это также не работает, потому что вы можете только расширять классы, а string/String - это не классы, а встроенные типы.
Каков самый простой способ расширения String и доступа к моему методу расширения?
Но где в код вы добавляете это определение? потому что я получаю свойство 'myExtension' не существует в типе 'String', поэтому он не компилируется. У меня есть эта часть кода внутри определения модуля. – Oscar
Это работало для меня, TANKS! – Benoit
@ Оскар же, не работает на моем –