nestia icon indicating copy to clipboard operation
nestia copied to clipboard

is tsconfig's strictPropertyInitialization property safe to set false?

Open daimalou opened this issue 1 month ago • 3 comments

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?

daimalou avatar May 03 '24 16:05 daimalou

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.

samchon avatar May 04 '24 13:05 samchon

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

daimalou avatar May 04 '24 17:05 daimalou

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.

samchon avatar May 04 '24 17:05 samchon