본문 바로가기

IT217

[git] .env file 무시 설정 반영되지 않을 때 .gitignore 파일에 들어가기 전에 파일이 이미 tracking되어 있었다면, ignore 파일에 해당 파일을 추가하였음에도 불구하고 계속 tracking되어 있을 수 있다. 이 문제를 해결한다 git rm .env --cached git commit -m "Stopped tracking .env" https://stackoverflow.com/questions/38983153/git-ignore-env-files-not-working git ignore .env files not working I have a laravel project. In the root directory are these 4 files: .env .env.example .env.local .env.staging I have.. 2024. 3. 31.
[react] Suspense React 18에 Suspense를 SSR에서 사용할 수 있다. 어떤 문제가 있었고, 어떻게 해결해서 어떤 효과가 있었는지 알아보자 아래의 링크를 읽고 정리한 글입니다. 어디든 다 똑같은 이야기이니, 제 머리속에 있는 지식을 정리하기 위함이니 이 글이 도움이 될지 모르겠습니다. SSR 서버에서 react component를 html로 만들어 사용자에게 보낸다. 이 html은 아직 interactive 하지 않음 js bundle이 다 로드 된 후 hydration 과정을 걸친 후 interactive 가능 CSR만 사용할 때보다 SSR를 사용하면 이점은 확실히 있다 이유는 CSR만 사용하면 blank page부터 사용자가 볼 것이기 때문이다. SSR을 사용하면 blank page부터 보여지는게 아니라 s.. 2024. 3. 26.
[typescript] Union & Intersection 정리Union Type에서의 교집합, 합집합과 구조적 타입에서의 교집합, 합집합의 개념은 다르다.구조적 타이핑은 객체가 어떤 타입에 부합하는 최소한의 특징을 가지고 있다면, 그 타입에 해당하는 것으로 간주한다. Union Type여러 타입 중 하나를 가질 수 있다.  개념은 너무 쉬워서 넘어가고, 값을 넣을 때는 합친 타입 중 아무거나 넣으면 되고,사용할 때는 어떤 타입을 사용할 것인지 확인 후 사용. 즉, Narrowing해서 사용 단, 사용할 로직이 어느 타입이든 상관없다면 Narrowing 할 필요는 없음function printId(id: number | string) { if (typeof id === 'number') { console.log(`${id} is number`).. 2024. 3. 17.
[Typescript] Type Assertion 언제 사용하나 Typescript가 알 수 없는 type이거나 추론한것보다 개발자가 더 정확한 타입을 알고 있을 때 타입을 강제할 수 있다. 예) getElementById에서는 HTMLElemnt를 리턴하는데, 개발자는 canvas를 가져올것을 알기에 HTMLCanvasElement 으로 강제시킨다. const myCanvas = document.getElementById("main_canvas") as HTMLCanvasElement; 특징 컴파일 때 사라지기에 런타임 때 영향을 받지 않는다. 그래서 강제한 타입이 틀리더라도 null이나 exception이 발생되지 않는다. 하지만 조심해야 한다. 경험사례로, string을 enum 타입으로 강제해서 사용했지만 런타임에서는 enum타입에 맞지 않아 u.. 2024. 3. 16.
[typescript] Array가 Record type에 호환이 된다고? 결론 맞다. 뿐만아니라 function, Map, Date, Boolean, String, class도 된다. Record Type type Record = { [P in K]: T; } 이유 key의 형태가 index signature로 되어 있기 떄문이다. [P in K] 가 array['0'] 를 받아줄 수 있기 때문이다. const a = [1, 2, 3, 4, 5] const b: Record = a console.log('a', a) // [1, 2, 3, 4, 5] console.log('b', b) // [1, 2, 3, 4, 5] console.log('isArray', Array.isArray(b)) // true 더 신기한 사실!! string 자체도 Record에 호환이 된다. 이유.. 2024. 3. 13.
[Typescript] Complier Options - suppressImplicitAnyIndexErrors 개념 object에 있는 값을 indexing 하는 방식으로 값을 가져올 때 2가지 상황에 대해서 암묵적인 any로 추론되는데, 이 에러 경고를 무시하는 옵션 첫번째 상황 object type에서 없는 키 index signature에 넣었을 때 두번째 상황 keyof typeof object 의 타입과 다른 타입의 키를 index signature에 넣었을 할때 특징 해당 옵션을 사용한다면 (set to 'true') 너무 위험하기에 사용할 때마다 아래처럼 주석을 달아주는걸 권장한다. 5.5에는 deprecation이 될 예정이라 미리 false로 변경 후 에러 경고나는 곳을 수정하는게 바람직하다 테스트 무조건 에러 경고가 뜨는건 아님. 추론된 object 타입의 key가 아닌 다른 key를 index.. 2024. 3. 12.