为什么TypeScript不会为未定义类型引发编译错误

时间:2020-03-18 14:04:30

标签: typescript react-native

这是描述问题的简单再现:

  1. 我使用npx react-native init MyApp --template react-native-template-typescript创建了一个香草RN项目
  2. App.tsx中,我添加了let foo: IThoughtTheWholePointOfATypeSafeLanguageWasNotToAllowShitLikeThis = "...seriously, wtf, why does this compile without an error!?";
  3. 我使用yarn iOS
  4. 运行该应用

该应用程序运行正常,并且捆绑程序中没有错误。

问题:如何使它引发编译错误?

2 个答案:

答案 0 :(得分:2)

您可以在编译器选项中使用--strict

这将:

启用所有严格类型检查选项。 启用--strict将启用--noImplicitAny,--noImplicitThis,--alwaysStrict,--strictBindCallApply,--strictNullChecks,--strictFunctionTypes和--strictPropertyInitialization。

来源:https://www.typescriptlang.org/docs/handbook/compiler-options.html

答案 1 :(得分:0)

想通了。

yarn tsc进行编译并生成类型错误(如果存在)。如果您需要在调用预期命令之前因类型错误而失败,则可以将此命令作为package.json文件中其他命令的一部分进行链接,方法是在现有命令之前加上yarn tsc &&

例如,我的package.json中的命令之一如下:
"test": "yarn tsc && rm -f __tests__/**/*.js && jest --coverage"

rm位可能对您有所帮助,因为我注意到运行tsc会生成所有.js文件的.ts版本。