React Native仍然使用定义不正确的类型(TypeScript)运行
我正在尝试将React本机项目转换为基于TypeScript的项目。 到目前为止,我将React Native仍然使用定义不正确的类型(TypeScript)运行,typescript,react-native,Typescript,React Native,我正在尝试将React本机项目转换为基于TypeScript的项目。 到目前为止,我将.jsx文件转换为.tsx文件,当我运行纱线tsc时,它会抛出大量错误。 然而,我的npx react native start&&npx react native run android仍然毫无怨言地运行。(我试着清理缓存) 我故意将其中一个变量定义为不正确的类型,代码仍然可以正常运行。我做错了什么?为什么我的项目仍然有效 我的tsconfig.json如下所示 { "compilerOptio
.jsx
文件转换为.tsx
文件,当我运行纱线tsc
时,它会抛出大量错误。
然而,我的npx react native start
&&npx react native run android
仍然毫无怨言地运行。(我试着清理缓存)
我故意将其中一个变量定义为不正确的类型,代码仍然可以正常运行。我做错了什么?为什么我的项目仍然有效
我的tsconfig.json
如下所示
{
"compilerOptions": {
"allowJs": true,
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"isolatedModules": true,
"jsx": "react",
"lib": ["es6"],
"moduleResolution": "node",
"noEmit": true,
"noEmitOnError": true,
"noImplicitAny": false,
"strict": true,
"target": "esnext"
},
"exclude": [
"node_modules",
"babel.config.js",
"metro.config.js",
"jest.config.js"
]
}
为什么我的项目仍然有效
大多数类型错误实际上并不会阻止typescript发出javascript代码。Typescript仍然能够发出带有类型错误的代码。真正需要做的就是删除类型和属性,这样就可以让剩下的纯javascript发挥作用*
如果您查看,您将看到以下类型脚本代码:
const aString: string = 123 // Type 'number' is not assignable to type 'string'.(2322)
正在编译到此javascript中:(请参见右侧窗格,单击“.JS”)
它有类型错误,并发出可运行的javascript代码
运行使用类型错误编译的项目时,很可能会因此遇到运行时错误。因此,您肯定应该修复这些类型错误
*以及其他一些与transfilation无关的语法,如
enum
、可链接的空访问器foo?.bar
,等等。感谢您的解释!我认为这两行代码会阻止编译。我想我没有正确理解这些。我不确定您的设置是否正确,但tsc
可能不是编译代码的原因,因此该选项可能会被忽略。像webpack或babel这样的工具可能只是剥离类型,而不是实际执行类型检查。但是如果您有noEmit:true
,那么tsc
将永远不会发出代码,因此noemitError
设置无论如何都不重要。
"use strict";
const aString = 123;