问题标签 [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.
typescript - TypeScript:在将参数传递给函数调用之前检查参数的必需属性是否已定义
这不会编译(游乐场):
有比 更优雅的解决方法params as any
吗?
typescript - 为什么 TypeScript 在使用 concat 减少数组时会推断出“从不”类型?
代码比语言说得更好,所以:
该代码非常愚蠢,并返回一个复制的数组......
TS 抱怨 concat 的参数:TS2345:“字符串”类型的参数不可分配给“ConcatArray”类型的参数。
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?
typescript - Typescript 使用可选键对对象进行严格的空检查
我strictNullchecks
在我们的 Angular 项目中引入了编译器选项,并且遇到了这个问题。
错误 TS2345:类型为“字符串”的参数 | undefined' 不能分配给'string' 类型的参数。
在上面的代码中,我menuItemList[i].route
在使用它之前检查了它的定义,但是我仍然收到上面列出的错误。
如果我将它转换为 astring
那么它将解决问题,但我认为这是一个不好的解决方法,因为我已经确认它不能undefined
在 if 语句中,所以它必须是string
类型。
我相信这个问题可能与MenuItem.route?
可选的事实有关,但不明白为什么这是一个问题,因为我之前提到过这不可能是undefined
由于if
检查。
typescript - TypeScript:即使 strictNullChecks 为假,我是否可以检查类型是否包含未定义?
我们在 redux-starter-kit 中遇到了一个问题,其中库的用户禁用了 strictNullChecks,并且我们的类型测试之一是短路,返回不同情况的类型。
此测试应返回 True-Parameter 或 False-Parameter,具体取决于 P 参数是否包含 undefined。
这是当前代码:
所以我希望这两个都返回“是”:
现在我问自己是否有另一种方法来测试它,即使使用 strictNullChecks: false
typescript - 打字稿 strictNullChecks 不会缩小类型
即使我明确检查未定义,我也有一个简单的情况,strictNullChecks
即不缩小类型。
错误信息是:
我如何帮助 TS 编译器解决这个问题?TS 版本 3.7.2
typescript - 在 TypeScript 的小于或大于比较中允许可空操作数
在 JavaScript 中,关系表达式中的空操作数被视为 0:
但是在 TypeScript 中,如果我为它提供类型注释f
并打开严格的空检查,那么我会得到编译器错误Object is possibly 'null'
:
有没有办法告诉编译器这里可以接受可空操作数?
我可以用 on 的非 null 断言关闭编译器f()
,但我担心这f()!
会误导代码审阅者,因为f()
可以在这里返回 null。
typescript - 让 Typescript strictNullChecks 与未定义的返回 vanilla js 函数一起工作
使用惯用的 js 在错误时返回未定义,转换为 TS
在新的 TS 代码中使用乘法时,我遇到了编译器认为 doStuff 可以返回未定义的问题,而实际上它不能。
因此,我尝试编写由安全 TS 代码调用的该函数的“不安全”版本,而将安全版本留给常规 js 代码。
由于 unsafeMultiply 只能接受一个数字,因此 multiply 中的类型保护应该考虑到 multiply 只会返回一个数字,因为 unsafeMultiply 只能处理数字。如果这对编译器来说太复杂了,我该如何强迫他接受我知道我在做什么?
typescript - 我可以在没有 strictNullChecks: false 的情况下解决这个问题吗?
我想知道如何在不设置strictNullchecks
为 false 的情况下解决这个问题。
或者
strictNullChecks
如您所知,当我将 设置为 true时,TypeScript 会显示类似“对象可能未定义”的错误。
strictNullChecks
将其设置为false是最佳选择吗?
------- 添加的内容 -------
Q1。当我尝试使用“案例”作为变量时。它需要变量声明。是预先声明的词吗?
Q2。并且console.log(selectedCase.message)
也会selectedCase.message
发生错误Object is possibly undefined
。
为什么会发生这种情况..?
typescript - 为什么 TypeScript 在 strictNullChecks 下允许在三元内赋值?
我是 TypeScript 的新手,但我看到了看似不一致的行为:我可以将 null 作为三元赋值的一部分分配给接口,但通过 if/else 流执行此操作时出现错误(请参见下文)。
该项目设置为强制执行 strictNullChecks,因此我预计两种方法都会出现错误 2322。
我错过了什么?