#typescript #typescript-decorator
#машинописный текст #typescript-декоратор #typescript #typescript-decorator
Вопрос:
Я стараюсь следовать этому руководству по оформлению параметров машинописного текста, но изо всех сил пытаюсь получить его, возможно ли создать декоратор для проверки параметра метода следующим образом:
class World{
constructor(){
}
sayHelloTo(@checkIfNameBeginsWithCapital name: string){
console.log("Hello World!");
}
}
Если я правильно понял, это может быть достигнуто путем создания двух декораторов, как показано ниже:
class World{
constructor(){
}
@validate
sayHelloTo(@nameBeginWithCapital name: string){
console.log("Hello World!");
}
}
@nameBeginWithCapital
определит метаданные для параметра и @validate
будет искать параметр с такими метаданными и выполнять фактическую проверку, я прав?
Вопрос, правильно ли я понимаю, и если нет, то можно @checkIfNameBeginsWithCapital
создать для выполнения этой задачи без дополнительных декораторов в рамках текущих ограничений TS?
Ответ №1:
@nameBeginWithCapital определит метаданные для параметра, а @validate будет искать параметр с такими метаданными и выполнять фактическую проверку, я прав?
Точно. Декораторы параметров можно использовать только для добавления метаданных. «Тяжелая работа» должна выполняться с помощью декоратора метода, точно так, как вы описали. Хороший пример и объяснение можно найти в TypeScript Handbook (как вы уже нашли и который является официальным источником), который демонстрирует то, чего вы пытаетесь достичь, но вместо этого с required
проверкой.
Я изменил пример из руководства в соответствии с вашим случаем и заставил его работать на StackBlitz.
Комментарии:
1. Большое вам спасибо!