为什么Typescript在函数中允许空/未定义
为什么Typescript允许在那里传递为什么Typescript在函数中允许空/未定义,typescript,Typescript,为什么Typescript允许在那里传递null/未定义的 // "strictNullChecks": false function someFun(param: (foo: any) => any) {} someFun(null); // no error - incorrect someFun(undefined); // no error - incorrect 引述 在严格的空检查模式下,空值和未定义值不在每种类型的域中,只能分配给它们自己和任何(一个例外是未定义值也可以分配
null
/未定义的
// "strictNullChecks": false
function someFun(param: (foo: any) => any) {}
someFun(null); // no error - incorrect
someFun(undefined); // no error - incorrect
引述
在严格的空检查模式下,空值和未定义值不在每种类型的域中,只能分配给它们自己和任何(一个例外是未定义值也可以分配给void)
..T和T |未定义在常规类型检查模式中被视为同义词(因为未定义被视为任何T的子类型)
引述
在严格的空检查模式下,空值和未定义值不在每种类型的域中,只能分配给它们自己和任何(一个例外是未定义值也可以分配给void)
..T和T |未定义在常规类型检查模式中被视为同义词(因为未定义被视为任何T的子类型)
它允许这样做是因为,正如您所知,您禁用了--stricnullchecks
。您是否在问“为什么禁用--strictNullChecks
会禁用严格的空检查”?答案如下。或者您在问“为什么默认情况下禁用了--strictNullChecks
”?这可能就是答案:它将破坏在这些--strict
选项存在之前使用TypeScript的现有现实世界代码。它允许这样做,因为您知道,您禁用了--strictNullChecks
。您是否在问“为什么禁用--strictNullChecks
会禁用严格的空检查”?答案如下。或者您在问“为什么默认情况下禁用了--strictNullChecks
”?这可能是答案:它将打破在这些——严格的选项存在之前使用TypeScript的现有现实世界代码。