๋งจ ์ฒ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋ฐฐ์ธ ๋ ๊ฐ๋ ๋ง ํ ๋ฒ ํ๊ณ ์ง๋๊ฐ๋ TypeScript๋ฅผ ๋ค์ ํด๋ณด๊ณ ์ถ์ด์ ์ค๋ ๊ธฐ์ด ๊ฐ์๋ค์ ์ญ ์ดํด๋ดค๋ค. Java๋ฅผ ํ๊ณ ์จ ๋ค์์ TypeScript๋ฅผ ์ ํ๋ ์๋ฌด๋๋ ์ดํดํ๊ธฐ๊ฐ ๋ ์ฌ์ ๋ค. ์์ ์ค ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ๊ณผ ํด๋์ค๋ฅผ ์๊ฐํ๋ ์ฑํฐ์์ ๋๋ฐ์์ด ts2564 ์๋ฌ, "Property 'fullName' has no initializer and is not definitely assigned in the constructor"๋ฅผ ๋ง๋ฌ๋ค.
ํ์ฌ tsc -v ๋ช ๋ น์ด๋ก ์ดํด๋ณธ ํ์ฌ Version์ 4.1.3์ด๊ณ , ์ด๊ณณ์ ์ฐธ๊ณ ํด๋ณด๋, 2.7.2์๋ถํฐ ๋์ ๋ strict class checking์ผ๋ก ์ธํ ์ค๋ฅ๋ผ๊ณ ๋์ ์์๋ค.
๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ํด๊ฒฐ ๊ฐ๋ฅํ๋ฐ,
class Employee {
fullName!: string;
age!: number;
jobTitle!: string;
hourlyRate!: number;
workingHoursPerWeek!: number;
printEmployeeDetails = ():void => {
console.log(`${this.fullName}์ ์ง์
์ ${this.jobTitle}์ด๊ณ , ์ผ์ฃผ์ผ ์์
์ ${this.hourlyRate * this.workingHoursPerWeek} ๋ฌ๋ฌ์ด๋ค.`);
}
}
property!: type; ์ฒ๋ผ bang sign(!)์ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
ํน์, tsconfig.json์์ "strictPropertyInitialization"์ true๋ฅผ false๋ก ๋ฐ๊ฟ์ฃผ๋ฉด ๋๋ค.