我正在使用带有Typescript的Ionic v2 beta,并且很乐意使用它--strictNullChecks.然而,我的项目的相关性,比如@角/核心,当我把原因编译错误strictNullChecks: true在我tsconfig.json.
有没有办法将目录/文件/模块/类声明为遵守strictNullChecks,即使整个项目无法使用标志进行编译?
看起来,由于--strictNullChecks不是默认值,因此在没有标志的情况下编写的依赖项将使用极其有限(尽管是一个非常有用的功能).
dan*_*nvk 11
如果您想扩展strictNullChecks到项目中的特定目录,可以使用您的项目中的extends子句tsconfig.json.例如,如果您的项目如下所示:
a/
code.ts
b/
other.ts
tsconfig.json
Run Code Online (Sandbox Code Playgroud)
并且您希望在其中启用严格的空值检查a,您可以添加a/tsconfig.json:
{
"extends": "../tsconfig.json",
"compilerOptions": {
"strictNullChecks": true
}
}
Run Code Online (Sandbox Code Playgroud)
当您tsc从内部目录运行时a,您将获得严格的空检查a/code.ts.
这种方法并非没有缺点:
a/code.tsimport ../b/other.ts,那么你也会得到严格的null检查b/other.ts.tsc从根目录运行,则不会进行严格的空检查a/code.ts.您正在大型项目中有效地创建一个新的,严格的子项目.您需要确保tsc在构建过程中为两个项目运行.它并不完美,但它可能会帮助您逐步迁移大型项目strictNullChecks.
如果您的依赖项全部位于.jsand.d.ts文件中(即,不是 ts 源),那么您可以使用一个标志并告诉编译器跳过检查您的库,这将导致库中不会出现错误。
为此有两个新标志:
\nskipLibCheck:
\n\n不要\xe2\x80\x99t检查默认库(
\nlib.d.ts)文件\xe2\x80\x99s的有效性
skipDefaultLibCheck:
\n\n不要\xe2\x80\x99t 检查用户定义的默认库 (
\n*.d.ts) 文件\xe2\x80\x99s 的有效性
有关更多信息,请参阅Typescript 2 的新增功能:
\n\n\nTypeScript 2.0 添加了一个新的
\n--skipLibCheck编译器选项,\n它会导致\n跳过声明文件(扩展名为 的文件.d.ts)的类型检查。当程序包含大型声明文件时,编译器会花费大量时间对已知不包含错误的声明进行类型检查,并且通过跳过声明文件类型检查可能会显着缩短编译时间。\n
--skipLibCheck由于一个文件中的声明可能会影响其他文件中的类型检查,因此在指定时可能无法检测到某些错误。例如,如果非声明文件扩充了声明文件中声明的类型,则可能会导致仅在检查声明文件时才报告的错误。但实际上,这种情况很少见。
| 归档时间: |
|
| 查看次数: |
3359 次 |
| 最近记录: |