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