こんにちは。
TypeScriptについて基本的な事を聞きたいのですが。
このような複数Validationを一つにまとめたカスタムValidationにしたいのですが。
TypeScript
1interface chkParam { 2 min?: number; 3 max?: number; 4 isRequired? boolean; 5} 6export const chkText = (param: chkParam, validationOptions?: ValidationOptions) => { 7 return applyDecorators( 8 IsNotEmpty({'message' : '必須です'}), 9 MinLength(param.min, {'message' : '桁以上で入力して'}), 10 MaxLength(param.max, {'message' : '桁以下で入力して'}), 11 ); 12}
↑の通り、param引数は省略可能です。
applyDecorators()に未指定の場合はチェックを含めない様にするにはどうすれば良いのでしょうか?
↓この様なイメージの事が出来れば良いのですが、拒否されてしまいます。。
TypeScript
1 let decorators: Array<PropertyDecorator> = []; 2 3 if (param.min && param.min > 0) { 4 decorators.push(MinLength(param.min, {'message' : '桁以上で入力して'})); 5 } 6 if (param.max && param.max > 0) { 7 decorators.push(MaxLength(param.max, {'message' : '桁以上で入力して'})); 8 } 9 10 return applyDecorators(decorators);
お分かりになる方いましたら、アドバイス頂ければ幸いです。
> 拒否されてしまいます
具体的に、どうなるのですか?
これはNestJSですか?`applyDecorators`はTypeScriptの仕様ではないので
使っているライブラリで問題を調べたほうがいい気がします。
ありがとうございます!
>maisumakunさん
ライブラリ側のIFとして、Array<ClassDecorator | MethodDecorator | PropertyDecorator>となっていた為、合わせたつもりなのですが。。
Argument of type '(ClassDecorator' | 'MethodDecorator' | 'PropertyDecorator')[] is not assignable parameter of type 'ClassDecorator | MethodDecorator | PropertyDecorator'.
と怒られます。そもそも宜しくない書き方なのか判断できずにいます。
>ukyodaさん
仰る通りです。.tsファイルでVSCodeで開発しており、文法的な質問だったのでTypeScriptかと思ってました。失礼しました。
こんな感じでも受け渡せればいいのですが・・(これはnullが入るのはそれでおかしいですが・・)
return applyDecorators(
!!param.IsNotEmpty ? IsNotEmpty({'message' : '必須です'}) : null,
!!param.min ? MinLength(param.min, {'message' : '桁以上で入力して'}) : null,
!!param.max ? MaxLength(param.max, {'message' : '桁以下で入力して'}) : null,
);
回答1件
あなたの回答
tips
プレビュー