๐ฉ๐ค ํ๋ก ํธ์๋/typescript
[typescript] ๋์ ์ผ๋ก ํค๊ฐ ์ถ๊ฐ๋๋ ๊ฐ์ฒด์ ํ์ ์ง์ ํ๊ธฐ
const cache = {}; const add = (id: string, value: string) => { cache[id] = value; }; const remove = (id: string) => { delete cache[id]; }; cache ๊ฐ์ฒด์๋ ๋์ ์ผ๋ก ํค๊ฐ ์ถ๊ฐ๋๊ณ , ์ญ์ ๋ ์ ์๋ค. 1. Record ์ฌ์ฉํ๊ธฐ const cache: Record = {} Record์ ์ฒซ๋ฒ์งธ ์ธ์์๋ key์ ํ์ , ๋๋ฒ์งธ์๋ value์ ํ์ ์ ์ง์ ํ๋ค. Record ๊ฐ์ฒด์ ํค๊ฐ Keys, ๊ฐ์ Type์ ์ง์ ํ์ฌ ๊ฐ์ฒด ํ์ ์ ๋ง๋ค ์ ์๋ค. 2. index ํ์ ์ง์ const cache: { [id: string]: string } = {}; ์ธํฐํ์ด์ค ๋๋ ํ์ ์ฌ์ฉ interface C..
TS2339: Property 'reset' does not exist on type 'EventTarget'.
form ์์์ reset ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์๋ฐ ์๋์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค. const handleFormSubmit = async (e: React.FormEvent) => { ... e.target.reset(); // TS2339: Property 'reset' does not exist on type 'EventTarget'. } TS2339: Property 'reset' does not exist on type 'EventTarget'. ํด๊ฒฐ ๋ฐฉ๋ฒ 1. ํ์ ๋จ์ธํ๊ธฐ e.target์ as๋ฅผ ์ฌ์ฉํด์ HTMLFormElement ํ์ ์ ๋จ์ธํด์ค ์ ์๋ค. (e.target as HTMLFormElement).reset(); const handleFormSubmit = async (e: R..
Property 'Authorization' does not exist on type 'AxiosHeaders'
ํ์ฌ ํ๋ก์ ํธ์์ jwt๋ฅผ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์ axios interceptor๋ฅผ ์ด์ฉํด์ ํ ํฐ์ ๋ฐ๋ผ request ํค๋ ์ค์ ์ ํด์ฃผ์ด์ผํ๋ค. ์๋์ ๊ฐ์ด interceptor๋ฅผ ์ค์ ํ์๋ค. axios.interceptors.request.use((request) => { request.headers ? (request.headers.Authorization = `Bearer ${token}`) : (request.headers = { Authorization: `Bearer ${token}` }); }); // ๋๋ axios.interceptors.request.use((request) => { if (request.headers) { request.headers.Authorization = `Be..