TS13 [Nest] : Scheduler ๋ฅผ ์ฌ์ฉํ SoftDeleteData ์์ ์ญ์ Reference 1 Reference 2 Reference 3 Reference 4 Reference 5 Reference 6 ๊ตฌํํ๊ณ ์ ํ๋ ๊ธฐ๋ฅ nest.js/typeORM ์ softRemove ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๊ณ , ํด๋น ๋ฐ์ดํฐ์ deletedAt ์ปฌ๋ผ์ด ํ์ฌ ์๊ฐ ๊ธฐ์ค ํน์ ๊ธฐ๊ฐ์ด ์ง๋ ๋ฐ์ดํฐ๋ผ๋ฉด ์๋ฒ์์ ์๋์ผ๋ก ํด๋น ๋ฐ์ดํฐ๋ฅผ DB์์ ์๊ตฌ์ญ์ ํด์ฃผ๋ ๊ธฐ๋ฅ ํ์ ํจํค์ง npm install --save @nestjs/schedule ๋ค์คํธ์ ์ค์ผ์ฅด๋ฌ ํจํค์ง๊ฐ ํ์ํ๋ค. ํ์ฌ ์ํํธ ๋ฆฌ๋ฌด๋ธ ์ํค๋ ๋ก์ง // ์ด๋ ฅ์ - ์ญ์ async removeResume(resumeId: number): Promise { // ์ญ์ ํ ์ด๋ ฅ์ ํ์ธ const resume = await this.resumeRepos.. 2023. 8. 23. [TS] : utility type TS utility type Partial Partial ํ์ ์ ํ์ T์ ๋ชจ๋ ์์ฑ์ ์ ํ์ ์ผ๋ก ๋ง๋ค์ด์ค๋ค. ์ด๋ฅผ ํตํด ๊ธฐ์กด ํ์ ์ ์ผ๋ถ ์์ฑ๋ง ์ ๊ณตํ๋ ๊ฐ์ฒด๋ฅผ ์ฝ๊ฒ ์์ฑํ ์๊ฐ ์๋ค. Partial ์ฌ์ฉ ์ฌ๋ก interface Person { name: string; age: number; } const updatePerson = (person: Person, fields: Partial): Person => { return { ...person, ...fields }; }; const person: Person = { name: "Spartan", age: 30 }; const changedPerson = updatePerson(person, { age: 31 }); Person์ด๋ผ๋ ์ธํฐํ์ด์ค๋ .. 2023. 8. 22. [TS] : ์ ๊ทผ ์ ํ์ ์ ๊ทผ ์ ํ์ ์ ๊ทผ ์ ํ์ ? TS ์์๋ ์ ๊ทผ ์ ํ์(access modifiers)๋ฅผ ์ฌ์ฉํ์ฌ ํด๋์ค์ ๋ฉค๋ฒ(์์ฑ๊ณผ ๋ฉ์๋)์ ๋ํ ์ ๊ทผ ๊ถํ์ ์ ์ดํ ์ ์๋ค. ์ ๊ทผ ์ ํ์๋ ํด๋์ค ๋ด๋ถ์ ์ธ๋ถ์์ ํด๋น ์์ฑ์ ์ ๊ทผํ๋ ๋ฒ์๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. TS ์ ์ฃผ์ ์ ๊ทผ ์ ํ์ 1. public 2. protected 3. private public public ์ ๊ฐ์ฅ ๊ธฐ๋ณธ ๊ฐ์ด๋ค. ๋ฉค๋ฒ์ public ์ ๊ทผ ์ ํ์๊ฐ ์ค์ ๋์ด ์๋ค๋ฉด, ํด๋น ๋ฉค๋ฒ๋ ํด๋์ค ์ธ๋ถ์์๋ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค. class Person { public name: string; constructor(name: string) { this.name = name; } } const person = new Person("Alice"); console... 2023. 8. 22. [TS] : any unknown union any < unknown < union ๊ฐ์ธ์ ์ผ๋ก TS ๊ฐ JS ์ ๊ฐ์ฅ ํฐ ์ฐจ๋ณ์ ์ ๋๊ณ ์๋ ๋ถ๋ถ์ด๋ผ ํจ์, ๋ฐ์ดํฐ์ ํ์์ "๋ช ์"ํ ์ ์๋ ๋ถ๋ถ์ด๋ผ๊ณ ์๊ฐํ๋ค. ๋ฐ์ดํฐ์ ํ์ ์ด "๋ฐํ์"์ ๊ฒฐ์ ๋๋ JS์ ๋ฌ๋ฆฌ TS๋ ์ปดํ์ผ ๊ณผ์ ์์ ํ์ ์ด ์ ํด์ง๊ธฐ ๋๋ฌธ์, ๋ณดํต์ TS์์ ๊ฐ ๋ฐ์ดํฐ์ ํ์ ์ ๋ช ์์ ์ผ๋ก ์ง์ ํด ์ฃผ์ง๋ง, ์ด์ฉ ์ ์์ด ๊ฐ๋ณ์ ์ธ ํ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ถ๋ค๋ฉด any๋ฅผ ์ฐ๊ธฐ๋ณด๋ค๋ unknown์ ์ฌ์ฉ๋๊ฒ์ด ์ข์ ๊ฒ ๊ฐ๋ค. ๊ทธ๋ฆฌ๊ณ , ๊ฐ๋ณ์ ์ธ ํ์ ์ ์ผ์ผ์ด ์ ์ํ ์ ์๋ค๋ฉด union ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ์ผ ์ข์ ๋ฐฉ์์ด๋ผ๋ ์๊ฐ์ด ๋ ๋ค. ๋ฌผ๋ก ๊ฐ์ธ์ ์ธ ์๊ฐ์ด๋ค. any TS ์์ any ํ์ ์ ๋ชจ๋ ํ์ ์ ์ํผ ํ์ ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค. ์ด๋ค ํ์ ์ ๊ฐ์ด๋ ์ ์ฅํ ์ ์๋ค๋ ์๋ฏธ๋ฅผ ๊ฐ.. 2023. 8. 21. [TS] : tuple enum ๊ธฐ๋ณธํ์ ํํ (tuple) ? ํํ์ด๋ ์๋ก ๋ค๋ฅธ ํ์ ์ ์์๋ฅผ "์์"์ ๋ง๊ฒ ๊ฐ์ง ์ ์๋ ํน์ ํํ์ "๋ฐฐ์ด"์ ๋ปํ๋ค. ํํ๊ณผ ๋ฐฐ์ด์ ์ฐจ์ด ? ๋ฐฐ์ด์ number[], string[] ์ฒ๋ผ ๊ฐ์ ํ์ ์ ์์๋ง ๊ฐ์ง ์ ์๋ค. const testScores: number[] = [90, 85, 78, 92, “88”]; ์์ ์ฝ๋์ฒ๋ผ ๋ง์ง๋ง ์์๋ฅผ string ํ์ ์ผ๋ก ๋ฃ๊ฒ๋๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค. ์ฆ, ๊ฐ์ ํ์ ์ ์์๋ง ์ทจ๊ธํ ์ ์๋ค. ํํ์ ์ด๋ค ํ์ ์ ์์๋ฅผ ํ์ฉํ ๊ฒ์ธ์ง ์์์ ๋ง๊ฒ ์ ์๋ง ํด์ฃผ๋ฉด ๋ฉ๋๋ค. ์ผ๋ง๋ ์ง ํ์ฉ๋ ํ์ ์ ๋ฐ์ดํฐ๋ค์ ์ ์ฅํ ์ ์๋ค๋ ํน์ง์ด ์๋ค. ํํ ์ฌ์ฉ ์ฌ๋ก const person: [string, number, boolean] = ['Spartan', 2.. 2023. 8. 18. [TS] : .d.ts @types ๋ผ์ด๋ธ๋ฌ๋ฆฌ TS ๋ @types ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํด์ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ํ์ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ค !! ์์ ์๋ ์๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ ํ ๋ฆฌ์ ๋ค์ด๊ฐ๋ณด๋ฉด ์์ฒญ๋๊ฒ ๋ง์ .d.ts ํ์ผ๋ค์ ๋ณผ ์ ์๋ค. .d.ts ? ์ ํ์ผ์ JS์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ TS์ ์ฝ๋์์ ์ฌ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ๋ ์์ด๋ค. import ํ๊ณ ์ถ์ JS ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ค๋ฉด ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ด๋ค ํ์ ์ ๋ณด๋ฅผ ์ฌ์ฉํ๋์ง .d.ts ํ์ผ์ด ํ์ ์ ์ ์ํด ์ฃผ๋ ๊ฒ์ด๋ค. ๊ทธ๋ ๊ฒ TS ์์ JS์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค. .d.ts ํ์ผ์ ํตํด tsc ๋ ๋ค์ ์ ๋ณด๋ฅผ ์ ์ ์๋ค. ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํจ์ ํ์ ์ ๋ณด ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํด๋์ค ํ์ ์ ๋ณด ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐ์ฒด ํ์ ์ ๋ณด ๊ทธ๋ฌ๋ JS์์ ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ .. 2023. 8. 17. ์ด์ 1 2 3 ๋ค์