未初始化的变量在 TypeScript 中围绕 strictNullChecks 工作

问题描述 投票:0回答:1

考虑这个 MRE:

let foo: string;

function test() {
  console.log(foo.trim())
}

test()

我在 TSConfig 中使用

strictNullChecks
选项。 我预计编译器会出现错误
'foo' is possibly 'undefined'
。 但我只在运行时得到一个:

TypeError:无法读取未定义的属性(读取“trim”)

为什么 TSConfig 编译器不抱怨? 为什么我不需要将 uninitialized 变量键入为

string | undefined

这里也没有编译错误:

module1

export let foo: string;

module2

import { foo } from 'module1';
console.log(foo.trim());
typescript undefined strictnullchecks
1个回答
0
投票

Typescript 存储库上有一个悬而未决的问题。

这个问题虽然很老,但最近已在设计会议中讨论过。

有一个 open PR 可以通过在使用变量但从未初始化时抛出错误来“修复”此问题。

您还可以注意到,这只是“顶级”的问题

let
变量。

© www.soinside.com 2019 - 2024. All rights reserved.