打字稿:使用类型声明强制进行空检查?

Posted

技术标签:

【中文标题】打字稿:使用类型声明强制进行空检查?【英文标题】:Typescript: use type declaration to force a null-check? 【发布时间】:2020-12-25 03:21:34 【问题描述】:

我知道你可以在 typescript 中声明 type as nullable

但这并不强制用户进行空检查,例如

function maybeReturnString(): string | null  ... 
function getOnlyString(str: string)  ... 

const maybeString = maybeReturnString();
getOnlyString(maybeString) // OK

如果我不检查 null,使构建失败的正确方法是什么?

有没有类似于 Scala 中的 Option[String] 或 Kotlin 中的 String? 的东西?

【问题讨论】:

【参考方案1】:

我不确定您正在运行哪个版本的 TypeScript,但这肯定会引发编译时错误,如 playground 中所示(使用您自己的代码)。

要回答您的其他问题,您还可以使用与string | undefined 等效的string? 语法。

【讨论】:

奇怪,检查【参考方案2】:

我的问题是我没有设置配置strictNullChecks=true

【讨论】:

以上是关于打字稿:使用类型声明强制进行空检查?的主要内容,如果未能解决你的问题,请参考以下文章

使用键值管道进行打字稿类型检查

是否可以强制打字稿使用来自definitelyTyped 的类型而不是本机库类型?

打字稿:强制默认通用类型为“any”而不是“”

如何在打字稿中没有运行时副作用的情况下进行精确的类型检查?

找不到打字稿类型声明

如何在打字稿中声明函数类型