함수가 형식이 안전하지 않은 줄 알았는데strict가 꺼졌어요.
4832 단어 TypeScript시가tech
아래의 코드가 쓰여 있다.
type FuncType = (obj: { a: number }) => void;
type FuncTypeWithExtraKey = (obj: { a: number; b: number }) => void;
const func = (fn: FuncType) => {
fn({ a: 2 });
};
const func2: FuncTypeWithExtraKey = ({ a, b }) => {
if (a !== undefined) {
console.log("a is undefined");
}
if (b !== undefined) {
console.log("b is undefined");
}
};
func(func2);
FuncType 유형의 함수를 매개변수로 가져오는 함수 func를 준비합니다.FuncType은 매개 변수에서 a라는 키만 있는 대상을 떼어내고 되돌아오는 값의 유형은void형입니다.또한FuncTypeWithExtraKey라는 유형으로 정의된func2라는 함수도 준비했다.
FuncTypeWithExtraKey는 매개 변수에서 a와 b 키를 가진 대상을 수신하고 값을 되돌려 주는 형식은void형이다.
FuncType과 FuncType WithExtraKey의 매개 변수 유형은 다르다. 원래func는 func2를 대입할 수 없었는데 대입했다.
다음 예는 func에서 func2를 읽는데 func에서 func2를 보면 열쇠가 a밖에 없는 것 같아서 B도 주고 싶으면 욕을 먹는다.
그러나func2가 없는 상황에서 a와 b는 당연히 사용할 수 있기 때문에 b는undefined 상태에서 불린다.
어떻게 이런 문제가...그러고 보니
tsconfig.json보니까 strictfalse(땀)strict를 true로 바꾸면 호되게 욕을 먹는다.그나저나 이번 경우strictFunctionTypes만으로도 충분한데, 거기에 빠지지 않기 위해 기본적인 스트리트를 진짜로 만든 것은 나무랄 데가 없다.
Reference
이 문제에 관하여(함수가 형식이 안전하지 않은 줄 알았는데strict가 꺼졌어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/hitochan777/articles/af20c0e5273989텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)