인프런 커뮤니티 질문&답변
타입만들기가 아직 너무 어렵습니다. 혼자 문제를 만들어 풀어보다가 문의드립니다.
작성
·
683
0
const obj = {
a: '1',
p: '2',
l: '3',
};
const test = (v) => {
return v.replace(/a|p|l/gi, (matched) => {
return obj[matched];
});
};
test('apple'); // 기대되는값 1223ereplace를 이용해서 한번 여기에 타입을 달아보고 싶어서
const test = (v: string) => {
const matchedFunc: (
matched: keyof typeof obj,
) => typeof obj[keyof typeof obj] = (matched) => {
return obj[matched];
};
return v.replace(/a|p|l/gi, matchedFunc);
};이런식으로 수정을 시도했는데 일치하는 오버로드가 없다고 나옵니다..
interface Arr<T> {
replace():void;
}강의에서처럼 이렇게 두고 수정을 해보려고 해보았지만 아직 너무 어려운거 같습니다. 어떻게 하는게 좋을지 의견부탁드립니다.
퀴즈
타입스크립트에서 Array의 forEach나 map 메서드가 배열 요소의 타입을 기반으로 콜백 함수의 매개변수 타입을 자동으로 추론하는 주된 이유는 무엇인가요?
타입 별칭(Type Alias)을 사용했기 때문
any 타입이 기본으로 적용되기 때문
제네릭(Generics)이 활용되기 때문
함수 오버로딩(Overloading)이 선언되었기 때문
답변 2
0
mj
질문자
말해주신대로 했을때 obj[matched]에서
'string' 형식의 식을 '{ a: string; p: string; l: string; }' 인덱스 형식에 사용할 수 없으므로 요소에 암시적으로 'any' 형식이 있습니다.
'{ a: string; p: string; l: string; }' 형식에서 'string' 형식의 매개 변수가 포함된 인덱스 시그니처를 찾을 수 없습니다.ts(7053)
라고 에러가 나타나는데 해결이 안되서 점점 이상하게 변했습니다 ..ㅠ
제로초(조현영)
지식공유자
0





