Как добавить параметры к классу decorator в TypeScript?
Я хочу создать функцию декоратора для класса, который может принимать параметр.
Пример
@Plugin("My first Plugin")
class myFirstPlugin {
...
}
Я пробовал это, но это не работает:
function Plugin(constructor: Function, name:string){
console.log("Plugin found: " + name);
}
Я получаю ошибку в WebStorm, говоря:
TS2346: поставляемые параметры не совпадают ни с одной сигнатурой цели вызова
Как мне написать эту функцию декоратора?
1 ответ:
Если вы хотите, чтобы ваш декоратор получал параметры, то ваша функция декоратора должна возвращать фактическую функцию декоратора:
function PluginDecorator(name: string) { return (ctor: Function) => { console.log("Plugin found: " + name); } } @PluginDecorator("My first Plugin") class myFirstPlugin {}
Я изменил имя на
PluginDecorator
, потому чтоPlugin
уже существует, и компилятор жалуется на это имя.