samchon / nestia

NestJS Helper Libraries + TypeScript OpenAPI generator
https://nestia.io/
MIT License
1.71k stars 89 forks source link

is tsconfig's strictPropertyInitialization property safe to set false? #894

Closed daimalou closed 1 month ago

daimalou commented 2 months ago

Question

I am new to nestia, nestia is awesome.

I am using mongodb and using npx nestia setup --manager pnpm to setup nestia in my existing project.

But, I can't start dev server.

import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';

@Schema()
export class Phone {
  @Prop({ default: false })
  isEnabled: boolean;

  @Prop({ unique: true })
  phone: string;

  @Prop()
  isReceiveAlert: boolean;
}

I see a lot of Typescript error in console. I need to change schame add ! to each class property like this.

import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';

@Schema()
export class Phone {
  @Prop({ default: false })
  isEnabled!: boolean;

  @Prop({ unique: true })
  phone!: string;

  @Prop()
  isReceiveAlert!: boolean;
}

Meanwhile, I found that set strictPropertyInitialization to false in tsconfig.json can also solve this issue.

Is it safe to set this property to false and does it affect nestia?

samchon commented 2 months ago

strictPropertyInitialization is recommended setting of tsconfig.json, due to ensure the class properties' types.

However, possible to configure it to be false, and no problem at the Nestia side.

daimalou commented 2 months ago

@samchon thank you very much, can i just set "strict": false?

samchon commented 2 months ago

Still possible, but never recommend.

If you configure the strict to be false, every types become T | null | undefined.

In my perspective view, strict: false means not to use TypeScript.