programing

TypeScript 컴파일러 오류에도 불구하고 내 React Native 앱이 성공적으로 빌드되는 이유는 무엇입니까?

newsource 2023. 6. 9. 22:04

TypeScript 컴파일러 오류에도 불구하고 내 React Native 앱이 성공적으로 빌드되는 이유는 무엇입니까?

최근 Expo에서 TypeScript를 사용하기 시작했습니다.다음과 같은 모든 린터/포맷 통합 작업을 수행했습니다.typescript-eslint코딩하는 동안 대부분의 오류를 파악할 수 있습니다.코드가 컴파일되는지 확인하기 위해 실행합니다.npx tsc때때로 그리고 그에 따라 고쳐집니다.

아직 완전히 파악하지 못한 한 가지는 수많은 컴파일 오류가 발생해도 앱이 성공적으로 빌드되는 이유입니다.저는 앱 빌드가 성공적이기보다는 모든 컴파일 오류에 대해 빨간색 화면 오류를 볼 것으로 예상하고(그리고 선호합니다), 나중에 알게 될 것입니다.예를들면,

function square<T>(x: T): T {
  console.log(x.length); // error TS2339: Property 'length' does not exist on type 'T'.
  return x * x;
}

컴파일 시 쉽게 확인할 수 있는 전형적인 TypeScript 오류입니다.나는 그것이 큰 빨간 화면 오류와 빌드 실패로 이어지길 원합니다.

저는 TypeScript에 익숙하지 않기 때문에 매우 중요한 것을 놓치고 있을 가능성이 있습니다.정확히 무엇이 이러한 관대함을 유발하고 있으며 더 엄격한 검사를 시행할 수 있는 방법이 있습니까?

먼저 Typescript는 Javascript의 상위 집합이며, 이 경우 컴파일 중에 실제로 Typescript를 확인하지 않습니다.

기본적으로 Babel은 Types 스크립트를 제거하고 Javascript로 변환한 다음 Js 번들로 컴파일됩니다.

다음 Babel 문서의 첫 번째 줄과 주의 사항을 살펴볼 수 있습니다. https://babeljs.io/docs/en/next/babel-plugin-transform-typescript

Babel은 유형 검사를 하지 않기 때문에 구문적으로 올바르지만 TypeScript 유형 검사에 실패하는 코드는 성공적으로 변환될 수 있으며 종종 예상치 못한 방식이나 잘못된 방식으로 변환될 수 있습니다.

제가 제안하고 싶은 것은 빌드 명령을 먼저 포함하도록 확장하는 것입니다.tsc또는 오히려 Typescript 컴파일,noEmittsconfig에서 true로 설정합니다.

업데이트: 최근에 추가할 때 이 사항이 적용되는 다른 인스턴스를 찾았습니다.jest그리고.typescript프로젝트에.Jest 문서 하단에는 실제로 동일한 내용이 나와 있습니다.

https://jestjs.io/docs/en/getting-started#using-typescript

그러나 Babel과 함께 TypeScript를 사용할 때 주의해야 할 몇 가지 사항이 있습니다.Babel의 TypeScript 지원은 변환이므로 Jest는 테스트가 실행되는 동안 테스트를 유형 검사하지 않습니다.만약 당신이 그것을 원한다면, ts-just를 사용할 수 있습니다.

이 질문에 대한 솔직한 대답은: Babel은 컴파일하기 전에 모든 타자기 표시를 제거하십시오.따라서 CLI에서 오류가 발생하는 것을 볼 수 없습니다.

언급URL : https://stackoverflow.com/questions/58459262/why-does-my-react-native-app-build-successfully-despite-typescript-compiler-erro