javascript/typescript 17

[typescript] 'unknown' 형식은 '~~' 형식에 할당할 수 없습니다.

어떤 array형 변수가 하나 있는데 나는 타입 지정 안했는데 자기 마음대로 unknown이라 생각함. 그리고나서 변수.length하니까 에러를 열심히 띄우더라. const a: any[] = arr.map((aa) => ({ ...aa, name: 'hi' }));return a.length > 0 ? a : [];그래서 a:any[] 이런식으로 타입을 지정해줘도 unknown형식은 자꾸 뭘 할당할 수 없다고 떠서 열받...  1. 아래쪽에서 직접 타입 선언해주기const a = arr.map((aa) => ({ ...aa, name: 'hi' }));return (a as any[]).length > 0 ? a : [];부모가 정신을 못차리니 차라리 아래쪽에서 as로 타입을 다시 설정해주면 된다.

[typescript][react] string' 형식의 매개 변수가 포함된 인덱스 시그니처를 찾을 수 없습니다.

object로 된 요소를 바꾸려는데 저런 멘트가 뜬다면 타입으로 확실하게 명시해주면 된다. 1. 타입 정리interface Isomething { // 이거 [key: string]: boolean;}const [something, setSomething] = useState({ a: false, b: true,}) 여담으로 react에서 set함수로 변경할때 object를 어떻게 일괄/일부 변경하는지 적어두겠음. const [something, setSomething] = useState({ all: false, a: false, b: true,});// all의 상태에 따라 싹다 토글. 전체선택,해제 같은거에서 씀.const toggleAll = () => { const keyy = Ob..

[typescript] 'this'에는 형식 주석이 없으므로 암시적으로 'any' 형식이 포함됩니다.

타스에서 뭔가 작업하다보면 this에 위와 같은 에러가 뜸. 빠른 수정에는 화살표 함수를 쓰면 된다는데 그래도 에러는 사라지지 않는다. 이럴때 해결하는 방법! 1. tsconfig 수정 { "noImplicitThis": false } compilerOptions안에 있는 noImplicitThis를 false로 바꿔주면 된다. 아니면 this에 타입을 any말고 정확하게 짚어주면 됨.

[React][typescript] React.KeyboardEvent React.MouseEvent 동시에 쓸때

예를들어 검색input과 검색버튼에 같은 함수를 건거라고 보면 됨. 그 대신 input은 keydown이벤트로, 버튼은 click이벤트로 걸어서 keydown일때는 엔터키 체크하고 click은 그냥 검색하고 뭐 그런식으로 하려는데 자꾸 에러가 나는 것임. 1. as로 걸어주기 if (e.type == "keydown" && e.code == "Enter") { gotoPage(v); return; } if (e.type == "click") { gotoPage(v); } 이건 고치기 전임 if (e.type == "keydown" && (e as React.KeyboardEvent).code == "Enter") { gotoPage(v); return; } if (e.type == "click") { g..

[react][typescript] string[] 형식은 never[] 형식에 할당할 수 없습니다.

let arr = useRef([]); arr.current = text.replace(" ", "").split(","); // 에러 배열을 하나 만들어서 어떤 텍스트를 배열화한걸로 대체하려고 했는데 위와 같은 메세지가 뜨더라. arr가 []배열이라고 다 써놨는데 뭐가 문제지?? 1. 배열에 어떤 인자가 들어오는지 상세하게 알려주기 // useRef에 쓰는 예시 let arr = useRef([]); // 모르겠다 대충 넘어가자 let arr = useRef([] as any);

[typescript] 값 할당 시 문제

undefined 형식은 number 형식에 할당할 수 없습니다. undefined 형식은 string 형식에 할당할 수 없습니다. a = b 이렇게 a에 b를 할당하려고 하는데, a가 number고 b가 string이라 b를 숫자로 바꿔서 넣는다고 쳐보자. 근데 b가 또 undefined가 될 수 있다 이딴~~~소리를 하면서 에러가 뜨는데 그냥 이런건 조건 걸어서 걔가 undefined아닐때~ 이렇게 써주면 되는데 한줄로 쓰는 방법은 아래와 같음. 1. 한줄로 쓰는 법 const cnt = (settings.cnt !== undefined) ? parseFloat(setting.cnt) : 2; 넹