Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript正在忽略null或未定义为函数返回的可能性_Typescript - Fatal编程技术网

Typescript正在忽略null或未定义为函数返回的可能性

Typescript正在忽略null或未定义为函数返回的可能性,typescript,Typescript,我有一个函数,其中应该返回LoginResponse类型或null,但Typescript lint忽略了null的可能性,只是将LoginResponse显示为可能的值 export const getSession = (): LoginResponse | null => { return null } 我还尝试使用undefined,但没有成功。有什么想法吗?TLDR tsconfig.json: { "compilerOptions": { "strict":

我有一个函数,其中应该返回LoginResponse类型或null,但Typescript lint忽略了null的可能性,只是将LoginResponse显示为可能的值

export const getSession = (): LoginResponse | null => {
  return null
}

我还尝试使用undefined,但没有成功。有什么想法吗?

TLDR

tsconfig.json:

{
  "compilerOptions": {
    "strict": true
  }
}
命令行:
tsc——严格的

默认情况下,TypeScript将
null
undefined
视为所有其他类型的子类型。也就是说,一切都可以为空,也可以不定义

给定两种类型,
Base
Sub
,其中
Sub扩展了Base
,它们的联合,
Base | Sub
,仅相当于
Base
。因此,由于
null
是所有类型的子类型,它是
LoginResponse
的子类型,使得
LoginResponse | null
等同于
LoginResponse

要使TypeScript将
null
未定义的
视为不同类型,与所有其他类型无关,您需要启用
--stricnullchecks
,这是一个强大的类型检查选项

tsconfig.json

{
  "compilerOptions": {
    "strictNullChecks": true
  }
}
或者,在命令行上,
tsc--strictNullChecks.

--strictNullChecks
选项是功能强大的严格类型检查系列的一部分 选项,因此我们可以使用
--strict
,启用所有选项。强烈建议这样做,不仅因为它捕获了更多的错误并为这些错误提供了更多的语义,还因为它极大地提高了类型推断的质量,使许多代码在直觉上可以工作,实际上也可以工作。

tsconfig.json:

{
  "compilerOptions": {
    "strict": true
  }
}
命令行:
tsc——严格的

默认情况下,TypeScript将
null
undefined
视为所有其他类型的子类型。也就是说,一切都可以为空,也可以不定义

给定两种类型,
Base
Sub
,其中
Sub扩展了Base
,它们的联合,
Base | Sub
,仅相当于
Base
。因此,由于
null
是所有类型的子类型,它是
LoginResponse
的子类型,使得
LoginResponse | null
等同于
LoginResponse

要使TypeScript将
null
未定义的
视为不同类型,与所有其他类型无关,您需要启用
--stricnullchecks
,这是一个强大的类型检查选项

tsconfig.json

{
  "compilerOptions": {
    "strictNullChecks": true
  }
}
或者,在命令行上,
tsc--strictNullChecks.

--strictNullChecks
选项是功能强大的严格类型检查系列的一部分
选项,因此我们可以使用
--strict
,启用所有选项。强烈建议这样做,不仅因为它捕获了更多的错误并为这些错误提供了更多的语义,还因为它极大地提高了类型推断的质量,使许多应该直观地工作的代码实际上工作起来。

“严格”:true
在tsconfig.jsondid typescript中,切换到可为空的返回语法getSession=():LoginResponse?=>{奇怪,什么是
LoginResponse
?@AluanHaddad我不好,它工作了,我不得不在VSCode上重新启动TS服务器。谢谢!很高兴我能帮助
“strict”:true
在tsconfig.jsondid typescript中切换到可空返回语法getSession=():LoginResponse?=>{奇怪,什么是
LoginResponse
?@AluanHaddad我的错,它工作了,我不得不在VSCode上重新启动TS服务器。谢谢!很高兴我能帮上忙