问题标签 [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 投票
1 回答
2596 浏览

angular - 如何在角度 4 中实现 strictNullChecks

我试图strictNullChecks在 Angular 4 应用程序中实现。

我刚刚添加 "strictNullChecks": truetsconfig.json

当我运行应用程序时ng serve,出现以下错误。

怎么了?我们如何strictNullChecks在 Angular 4 中实现?

0 投票
2 回答
542 浏览

typescript - 带有 --strictNullCheck 的打字稿 - 在单独的方法中检查不为空

我很喜欢编译器--strictNullCheck选项

我有这个方法:

在此处输入图像描述

在此处输入图像描述

需要先检查标题是否不为空,然后才能使用它们。那太棒了

现在我想将检查操作移至这样的单独方法:

在此处输入图像描述

但不是我收到此错误:

在此处输入图像描述

所以没有办法在单独的方法中检查某个对象或其某些属性是否不为空?

0 投票
1 回答
7142 浏览

javascript - 打字稿:使用 Map<> 和 strictNullChecks

给定以下简单的类:

此外,在 tsconfig.json 中,标志strictNullChecksstrict已启用。

尽管subscribers检查了当前事件的键,但打字稿编译器会抱怨上面显示的错误消息(this.subscribers.get(event)可能未定义)。

如果我没有完全错,this.subscribers.get(event)永远不会是undefined这种情况。

我怎样才能摆脱该消息?

0 投票
2 回答
204 浏览

angular - 如何告诉 Typescript *在这种情况下*一个函数的返回类型永远不会为空

我正在尝试让打字稿strictNullChecks在 Angular 5 项目中工作。

我有一个表格:

我可以rememberMe使用this.signinForm.get('rememberMe'). 然而,该FormGroup#get方法的返回是AbstractControl | null如此打字稿不喜欢this.signinForm.get('rememberMe').value(因为它认为this.signinForm.get('rememberMe')可能是空的)。

是否可以告诉打字稿,在这种情况下,返回this.signinForm.get('rememberMe')总是AbstractControl 而不是 AbstractControl | null

0 投票
2 回答
12869 浏览

typescript - 打字稿和过滤布尔值

考虑打开以下代码:strictNullChecks

由于以下原因无法编译:

但绝对清楚,那false将被 过滤掉.filter(Boolean)

同样的问题null

有没有办法(除了写作as number[])来标记该值不包含falseor null

0 投票
2 回答
3514 浏览

typescript - 具有严格空值检查的 TypeScript - 数组访问呢?

在 TypeScript 中,如果启用了严格的 null 检查,我希望编译器会阻止我为变量赋值null或赋值,除非它承认.undefinednull

但是,数组访问似乎允许绕过此检查。

例子:

TypeScript Playground 上的可运​​行版本(注意:必须在“选项”对话框中启用“严格空值检查”)。

这里发生了什么?

  • 这是 TypeScript 编译器中的错误吗?
  • 还是故意遗漏?
  • 如果是后者,这是否记录在任何地方(最好有理由说明为什么这样做)?
0 投票
2 回答
2621 浏览

typescript - Ngrx:“商店”类型中缺少属性“[Symbol.observable]”' 错误

我在 Angular v5 应用程序中使用 NGRX v4.1.1("strictNullChecks": true虽然看起来无关紧要)。

我看到商店出现错误。鉴于以下情况:

打字稿在以下方面引发错误this.store.select()

这种选择存储切片(使用.select)并将其分配给类型变量的方法已在文档Observable<>正式概述(我实际上看到他们已将文档更新为 ngrx v5 推荐的 API,但 v5 尚未发布然而,所以我已经链接到下一个最新版本的文档)。

问题是它store.select()的返回类型Store<>Observable<>.

然而,这是与商店交互的“官方”方法(我认为)。所以我想知道出了什么问题。如果我禁用strictNullChecks,我仍然会遇到错误。这个错误出现在一个我一个月后要回来的项目中,我无法确定它究竟是什么时候开始的(或者为什么,很明显)。

任何建议表示赞赏:)

PS:Typescript不会让我将 return.select()转换为 observable。

更新

更新 npm 为我提供了更好的错误消息。看起来 rxjs 的界面已经更新,或者 ngrx 的界面已经更新。

0 投票
2 回答
970 浏览

typescript - 打字稿为什么类型保护不能按预期为可空联合类型的对象数组工作(已启用strictNullChecks)

无论类型保护如何,Transpiler 都会抛出错误:

这里没有错误:

0 投票
1 回答
776 浏览

typescript - 具有严格打字稿的 createStore

使用strict启用了打字稿的上述代码时,我收到以下警告:

我了解 TS 严格模式是什么,但我不明白为什么它将我的状态解释为可能undefined

我可能做错了什么?或者我怎么能在不做一些懒惰的事情的情况下处理错误as any

0 投票
1 回答
1845 浏览

javascript - 使用严格模式在 TypeScript 中找不到对象时应该返回什么?

这是打字稿中的代码片段strictNullChecks: true

如您所见,由于编译错误,当我找不到元素时,我无法返回 null:

错误“null”不可分配给类型“T”

我应该返回什么而不是 null?最佳做法是什么?