typescriptgraphqltypegraphqlclass-validator

Unable to resolve signature of property decorator when called as an expression


import { isEmail, isEmpty, isPhoneNumber, Length } from "class-validator"
import { Field, InputType } from "type-graphql";

@InputType()
export class RegisterInput {
    @Field()
    @Length(2, 15, { message: "Username Must Be At Least 2 characters" })
    username?: string;

    @Field()
    @isEmail()
    email?: string;

    @Field()
    @Length(1, 20)
    @isPhoneNumber()
    phoneNumber?: string;

    @isEmpty()
    password?: string

}

The thing is @isEmail() and @isPhoneNumber() and @isEmpty() throw the same error:

Unable to resolve signature of property decorator when called as an expression.
  This expression is not callable.
    Type 'Boolean' has no call signatures.ts(1240)

Please help me out I've been stuck with this bug the whole day


Solution

  • You have to write those Decorators with a capital letter. TypeScript is case sensitive:

    import { IsEmail, IsEmpty, IsPhoneNumber, Length } from "class-validator";
    
    @Field()
    @IsEmail()
    email?: string;
    
    @Field()
    @Length(1, 20)
    @IsPhoneNumber()
    phoneNumber?: string;
    
    @IsEmpty()
    password?: string