함수가 형식이 안전하지 않은 줄 알았는데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
보니까 strict
false
(땀)strict
를 true
로 바꾸면 호되게 욕을 먹는다.그나저나 이번 경우strictFunctionTypes만으로도 충분한데, 거기에 빠지지 않기 위해 기본적인 스트리트를 진짜로 만든 것은 나무랄 데가 없다.
Reference
이 문제에 관하여(함수가 형식이 안전하지 않은 줄 알았는데strict가 꺼졌어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/hitochan777/articles/af20c0e5273989텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)