Я недавно начал использовать TypeScript с Expo. Я сделал все интеграции linter / formatter так, 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, поэтому, возможно, мне не хватает чего-то очень важного. Что именно вызывает эту снисходительность и есть ли способ обеспечить более строгие проверки?
npx tsc
но я хочу получить красный экран для каждой ошибки TypeScript, так же как я делаю это для обычных ошибок JS, таких как,const n = 23; n.reverse();
что приводит к красному экрану с сообщением «n.reverse не является функцией. (В 'n.reverse ()', 'n.reverse' не определено) "Ответы:
Первое, что нужно понять, это то, что Typescript - это расширенный набор Javascript, и в этом случае он фактически не проверяется типом во время компиляции.
По сути дела, Babel просто удаляет Typescript и преобразует его в Javascript, который затем компилируется в пакеты js.
Вы можете взглянуть на первую строку следующих документов Babel, а также предостережения: https://babeljs.io/docs/en/next/babel-plugin-transform-typescript
Я бы предложил расширить вашу команду сборки, чтобы сначала включить
tsc
или, вернее, компиляциюnoEmit
Typescript с установленным значением true в вашем tsconfig.Обновление : я нашел другой случай, когда это применяется недавно при добавлении
jest
иtypescript
к проекту. В нижней части Jest Docs они фактически утверждают одно и то же:https://jestjs.io/docs/en/getting-started#using-typescript
источник