Вы можете использовать сигнатуру конструктора:
class DownloadWorker {
constructor(downloader: new () => IDownloader) {
}
}
Сигнатура похожа на сигнатуру функции, но new
делает ее вызываемой с помощью оператора new
для создания нового объекта.
Приведенный выше код принимает конструктор (то есть класс) без параметров. Вы можете добавить определенные параметры или определить его как new (...a:any[]) => IDownloader
, чтобы позволить конструктору с любыми аргументами.
Вот выстрел в лучшую замену regex:
's/##\([a-zA-Z_]\+\)##/${\1}/g'
Или если Вы принимаете точно три символа:
's/##\([a-zA-Z_]\{3\}\)##/${\1}/g'
's/##\([a-zA-Z_]\+\)##/${\1}/g'
Используйте это:
s/##\([^#]*\)##/${\1}/
BTW, нет никакой потребности выйти из $ в правой стороне "s" оператора.
sed 's/##\([a-zA-Z_][a-zA-Z_][a-zA-Z_]\)##/${\1}/'
\(...\)
помнит... и ссылается как \1
в расширении. Используйте одинарные кавычки для сохранения исправности.
Как отмечено в комментариях ниже этого, это может также быть законтрактовано к:
sed 's/##\([a-zA-Z_]\{3\}\)##/${\1}/'
Этот ответ предполагает что пример, требуемый точно три подобранные символа. Существует несколько изменений в зависимости от того, что является промежуточным знаки "диез". Ключевая роль помнит часть совпавшей строки.
повторите '##XXX##' | sed "s/^## ([^#] *)/## $ {\\1}/g"