只是好奇一下,包括:
"compilerOptions": {
"alwaysStrict": true,
...
}
因为它在默认情况下是假的。有什么想法?
发布于 2019-11-14 15:38:53
严格vs alwaysStrict
这是一个好主意,不仅是strict
alwaysStrict
,而且包括启用alwaysStrict
和E 212
以及noImplicitAny
、strictBindCallApply
、strictNullChecks
、strictFunctionTypes
、strictPropertyInitialization
和D19的标志。
令人困惑的名字
这里对名字有一种混淆,因为“严格”在这里几乎没有什么意思。strict TypeScript标志是启用上述多个其他标志的快捷方式。alwaysStrict TypeScript标志以
JS严格模式
中的解析形式解析您的文件(相对于
JS草率模式
和在输出中发射'use strict' )。与使用alwaysStrict标志不同,您可以将"use strict";添加到所有文件中(默认情况下,
ES模块
是严格的)。
其他严格旗
其他严格的TypeScript标志甚至更重要,因为它们帮助您消除这些错误:
在这方面,strictNullChecks是最重要的。
默认情况下,在添加检查空和未定义的新方法之前,不启用它与旧代码的向后兼容性。
有关更多细节,请参见此答案:
发布于 2017-05-01 21:37:50
只是好奇是否有什么缺点
即使您的文件将不处于strict
模式,它也将被视为是。例如,不允许在函数体内创建函数声明:为什么TS在函数体内用函数声明来抱怨
个人:穿上它是个好主意。更好的方法是始终使用JavaScript / TypeScript模块(在默认情况下,这些模块处于严格模式)。
https://stackoverflow.com/questions/43727889
复制相似问题