问题标签 [strictnullchecks]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
90 浏览

typescript - TypeScript:在将参数传递给函数调用之前检查参数的必需属性是否已定义

这不会编译(游乐场):

有比 更优雅的解决方法params as any吗?

0 投票
4 回答
24259 浏览

typescript - 为什么 TypeScript 在使用 concat 减少数组时会推断出“从不”类型?

代码比语言说得更好,所以:

该代码非常愚蠢,并返回一个复制的数组......

TS 抱怨 concat 的参数:TS2345:“字符串”类型的参数不可分配给“ConcatArray”类型的参数。

0 投票
1 回答
83 浏览

typescript - Typescript strictNullChecks error when not possible

I am attempting to turn on the strictNullChecks setting for my project, but have a rather curious error in the following snippet of code:

The error message has toaster.brandName underlined in the if statement with the following error text: error TS2532: Object is possibly 'undefined'. If the object is fine to use on the y = line above, why would it be a problem to use in the if statement? How can I fix this so it will quit erroring on this?

0 投票
0 回答
167 浏览

typescript - Typescript 使用可选键对对象进行严格的空检查

strictNullchecks在我们的 Angular 项目中引入了编译器选项,并且遇到了这个问题。

错误 TS2345:类型为“字符串”的参数 | undefined' 不能分配给'string' 类型的参数。

在上面的代码中,我menuItemList[i].route在使用它之前检查了它的定义,但是我仍然收到上面列出的错误。

如果我将它转换为 astring那么它将解决问题,但我认为这是一个不好的解决方法,因为我已经确认它不能undefined在 if 语句中,所以它必须string类型。

我相信这个问题可能与MenuItem.route?可选的事实有关,但不明白为什么这是一个问题,因为我之前提到过这不可能是undefined由于if检查。

0 投票
1 回答
221 浏览

typescript - TypeScript:即使 strictNullChecks 为假,我是否可以检查类型是否包含未定义?

我们在 redux-starter-kit 中遇到了一个问题,其中库的用户禁用了 strictNullChecks,并且我们的类型测试之一是短路,返回不同情况的类型。

此测试应返回 True-Parameter 或 False-Parameter,具体取决于 P 参数是否包含 undefined。

这是当前代码:

所以我希望这两个都返回“是”:

现在我问自己是否有另一种方法来测试它,即使使用 strictNullChecks: false

0 投票
2 回答
75 浏览

typescript - 打字稿 strictNullChecks 不会缩小类型

即使我明确检查未定义,我也有一个简单的情况,strictNullChecks即不缩小类型。

错误信息是:

我如何帮助 TS 编译器解决这个问题?TS 版本 3.7.2

0 投票
1 回答
432 浏览

typescript - 在 TypeScript 的小于或大于比较中允许可空操作数

在 JavaScript 中,关系表达式中的空操作数被视为 0

但是在 TypeScript 中,如果我为它提供类型注释f并打开严格的空检查,那么我会得到编译器错误Object is possibly 'null'

有没有办法告诉编译器这里可以接受可空操作数?

我可以用 on 的非 null 断言关闭编译器f(),但我担心这f()!会误导代码审阅者,因为f() 可以在这里返回 null。

0 投票
1 回答
126 浏览

typescript - 让 Typescript strictNullChecks 与未定义的返回 vanilla js 函数一起工作

使用惯用的 js 在错误时返回未定义,转换为 TS

在新的 TS 代码中使用乘法时,我遇到了编译器认为 doStuff 可以返回未定义的问题,而实际上它不能。

因此,我尝试编写由安全 TS 代码调用的该函数的“不安全”版本,而将安全版本留给常规 js 代码。

由于 unsafeMultiply 只能接受一个数字,因此 multiply 中的类型保护应该考虑到 multiply 只会返回一个数字,因为 unsafeMultiply 只能处理数字。如果这对编译器来说太复杂了,我该如何强迫他接受我知道我在做什么?

0 投票
1 回答
178 浏览

typescript - 我可以在没有 strictNullChecks: false 的情况下解决这个问题吗?

我想知道如何在不设置strictNullchecks为 false 的情况下解决这个问题。

或者

strictNullChecks如您所知,当我将 设置为 true时,TypeScript 会显示类似“对象可能未定义”的错误。

strictNullChecks将其设置为false是最佳选择吗?

------- 添加的内容 -------

屏幕截图

Q1。当我尝试使用“案例”作为变量时。它需要变量声明。是预先声明的词吗?

Q2。并且console.log(selectedCase.message)也会selectedCase.message发生错误Object is possibly undefined

为什么会发生这种情况..?

0 投票
0 回答
71 浏览

typescript - 为什么 TypeScript 在 strictNullChecks 下允许在三元内赋值?

我是 TypeScript 的新手,但我看到了看似不一致的行为:我可以将 null 作为三元赋值的一部分分配给接口,但通过 if/else 流执行此操作时出现错误(请参见下文)。

该项目设置为强制执行 strictNullChecks,因此我预计两种方法都会出现错误 2322。

我错过了什么?