TypeScript可选类型和类型之间的区别 未定义

偏头痛

我正在努力理解将字段定义为string | undefined之间的区别string?

我们当前的代码使用像这样的类型定义:

class Foo {
  public bar: string | undefined;
}

通过TSLint运行此代码时,它会引起注意并抱怨它:

考虑使用“?” 声明此属性的语法,而不是其类型的“未定义”。

现在的问题是,使用?语法的方式是否会完全相同,还是我遗漏了细微的差异?

class Foo {
  public bar?: string;
}

因此,我们string | undefined现在如何使用类型就在这种检查中:

if (foo.bar) {..} 这会改变吗?

看来打字稿文档对可选类型进行了更深入的探讨,但对于类在上下文中的表现却没有真正的了解。

努尔伯·阿尔皮斯巴耶夫(Nurbol Alpysbayev)

bar?: string是可选属性,而bar: string | undefined为必需属性之一:

interface Foo { 
    prop?: string
}

interface Foo2 {
    prop: string | undefined
}

const foo: Foo = {} // ok
const foo2: Foo2 = {} // error

关于这种情况:

if (foo.bar) {..}

两种方法都可以(包括Intellisense可以以任何一种方式工作)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章