Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React Native仍然使用定义不正确的类型(TypeScript)运行_Typescript_React Native - Fatal编程技术网

React Native仍然使用定义不正确的类型(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

我正在尝试将React本机项目转换为基于TypeScript的项目。 到目前为止,我将
.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;